有關於C語言的小問題,求高手解決,什么叫雙倍快速排序

時間 2022-09-12 16:20:32

1樓:匿名使用者

應該就是指快速排序吧——因為快速排序需要從兩頭向中間推進,可能他就形象化的去了這樣一個名字。以下是個人對快速排序的理解:

quicksort 細微差別比較

1、#include

typedef int t;

void swap(int*one,int *two)

void quicksort(t a, int l, int r)

while (a[i] < pivot);

dowhile (a[j] > pivot);

if (i >= j)

break;

swap(&a[i], &a[j]);

}a[l] = a[j]; /*將基準元素與a[j]交換,並把pivot定位到它的最終位置*/

a[j] = pivot;

quicksort(a, l, j-1); // 對左段排序

quicksort(a, j+1, r); // 對右段排序

}void main()

;printf("before quicksort the arry's element is:\n");

for(i=0;i<6;i++)

printf("%3d",a[i]);

printf("\n");

quicksort(a,0,5);

printf("after quicksort the arry's element is:\n");

for(i=0;i<6;i++)

printf("%3d",a[i]);

printf("\n");

}2、有條件快序排序成功

#include

typedef int t;

void swap (int *one,int *two)

void quicksort1(t a, int l, int r)

while (a[i] < pivot);

dowhile (a[j] > pivot);

if (i >= j)

break;

swap(&a[i], &a[j]);

}a[l] = a[j];

a[j] = pivot;

quicksort1(a, l, j-1); // 對左段排序

l = j + 1; // 調整l的值

}}void quicksort(t *a, int n)

void main()

;printf("before quicksort the arry's element is:\n");

for(i=0;i<6;i++)

printf("%3d",a[i]);

printf("\n");

quicksort(a,5);

printf("after quicksort the arry's element is:\n");

for(i=0;i<6;i++)

printf("%3d",a[i]);

printf("\n");

}其實這裡仍然可以對a[n]進行排序,只要再用一函式把a[n]插入到a[0…n-1]這個陣列中的適當位置。

2樓:匿名使用者

請問答案是什麼啊,可以發給我麼,我現在急需要~~謝謝

求助C語言高手!!C語言小問題,求指教!!

要原始碼還是要程式,等下發!c語言課程設計。一 設計專案 設計一個學生成績管理系統,該系統包括兩個大部分 1 學生基本情況錄入與查詢 包括學號 姓名 2 學生成績錄入與查詢 成績包括語文 數學 英語共3科 查詢包括各人的成績 最高最低平均分 名次 全班的總分 二 設計要求 1 採用c語言 vc 程式...

C語言的小問題

你的變數m,n,p是機器自有的,不用輸入了!機器只認10,20,30 因為程式設定的只讀多少個位元組的資料,你多一個小數點都不行的!錯一個bit都不行的 scanf只提供儲存。也就是隻提供地址。所以不會有這些 你要是想實現的時候可以在printf printf任意都可以實現。你愛怎麼輸都可以 可以的...

關於c語言開關語句的幾個小問題

第一題的case a printf c a 和第二題的 case 0 case 1 printf d,n 後都要加break switch選擇語句,除了最後一個分支不加break之外,一般其他的都要加。像你的那種狀況,肯定要在後面加break。就像你說的,你加的話,你輸入a會顯示ab,那是因為條件對...