在演算法導論的第七章,介紹了有關快速排序的演算法。該演算法其實是分治演算法的一種。
分:將陣列中的元素分成兩部分和乙個pivot;
治:遞迴的對兩個子陣列進行排序;
合:此時將陣列遍歷輸出即可;
書中介紹的演算法的主要思想如下:
1、首先將陣列的第乙個元素作為pivot,然後順序的遍歷該陣列,將小於pivot的元素同當前位置的下乙個位置的元素交換;
2、該過程直到遍歷到陣列最後乙個元素為止,最終將小於pivot的元素放在其左側,大於pivot的元素放在其右側;
3、遍歷輸出陣列。
這是我寫的完整的c**,以及測試結果:
#include
void quicksort(int *a,int p,int q);
int partition(int *a,int p,int q);
int main()
quicksort(a,0,7);
printf("排序後:");
for(i=0;i<8;i++)
printf("\n");
return 0;
}void quicksort(int *a,int p,int q)
return;
}int partition(int *a,int p,int q)
}t = a[i];
a[i] = a[p];
a[p] = t;
return i;
}
演算法導論 快速排序實現
package search 快速排序演算法導論 public class quicksort1 quicksort1 q new quicksort1 q.quicksort arr,0,arr.length 1 q.print1 arr 合併 public void quicksort int ...
演算法導論的C 實現 5 快速排序
對於包含n個數的輸入陣列來說,快速排序是一種最壞情況時間複雜度為o n 2 的排序演算法。雖然最壞情況時間複雜度很差,但是快速排序通常是實際排序應用中最好的選擇,因為它的平均效能非常好 它的期望時間複雜度是o nlgn 而且o nlgn 中隱含的常數因子非常小。與歸併排序一樣,快速排序也使用了分治思...
快速排序 演算法導論
對於包含n個數的輸入陣列來說,快速排序是一種最壞情況時間複雜度為o n 的排序演算法。雖然最壞情況時間的複雜度很差,但是快速排序通常是實際排序應用中最好的選擇,因為它的平均效能非常好 它的期望時間複雜度是o nlgn 而且o nlgn 中隱含的常數因子非常小,另外,它還能夠進行原址排序,甚至在虛存環...