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,那是因為條件對...