資源簡介
分治法的另外一種排序算法,快速排序。有注釋,便于閱讀,因為交換時使用的引用,暫時歸為C++,C語言版稍后奉上。
代碼片段和文件信息
#include?
#include?
void?swap(int?&m?int?&n)??//用引用交換兩個數(shù)
{
????int?temp;
????temp?=?m;
????m?=?n;
????n?=?temp;
}
int?Partition(int?*array?int?low?int?high)
{
????int?i=?low?j?=?high?pivot?=?array[low];
????while(i?????{
????????while(i?=?pivot)??//從后往前,直到找到小于基準值
????????????j--;
????????if(i?????????????swap(array[i++]?array[j]);??//交換,并且i自加
????????while(i?????????????i++;
????????if(i?????????????swap(array[i]?array[j--]);??//交換,并且j自加
????}
????return?j;??//返回基準下標值
}
void?QuickSort(int?*array?int?low?int?high)
{
????int?pivotpos;?//基準元素所對應(yīng)的位置
????if(low?????{
????????pivotpos?=?Partition(array?low?high);??//對數(shù)據(jù)進行劃分,pivotpos是基準元素下標
????????QuickSort(array?low?pivotpos?-?1);??//前半部數(shù)據(jù)
????????QuickSort(array?pivotpos?+?1?high);??//后半部數(shù)據(jù)
????}
}
int?main()
{
????int?n?i;
????printf(“輸入需要排列數(shù)據(jù)的個數(shù):“);
????scanf(“%d“?&n);??//錄入需要排列的個數(shù)
????int?*array?=?(int?*)?malloc?(sizeof(int?)?*?n);
????printf(“請輸入數(shù)據(jù):\n“);
????for(i?=?0;?i?????{
????????scanf(“%d“?&array[i]);??//錄入未排序的數(shù)據(jù)
????}
????QuickSort(array?0?n?-?1);??//進行排序
????printf(“排列后數(shù)據(jù):\n“);
????for(i?=?0;?i?????{
????????printf(“%d\n“?array[i]);
????}
????return?0;
}
/*
49
38
65
97
76
13
27
*/
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????27896??2013-11-04?14:23??QuickSort1\bin\Debug\QuickSort1.exe
?????文件???????1583??2013-11-04?14:23??QuickSort1\main.cpp
?????文件???????4219??2013-11-04?14:23??QuickSort1\obj\Debug\main.o
?????文件???????1065??2013-11-04?14:09??QuickSort1\QuickSort1.cbp
?????文件????????137??2013-11-04?14:10??QuickSort1\QuickSort1.depend
?????文件????????241??2013-11-04?14:23??QuickSort1\QuickSort1.layout
?????目錄??????????0??2013-11-04?14:23??QuickSort1\bin\Debug
?????目錄??????????0??2013-11-04?14:23??QuickSort1\obj\Debug
?????目錄??????????0??2013-11-04?14:23??QuickSort1\bin
?????目錄??????????0??2013-11-04?14:23??QuickSort1\obj
?????目錄??????????0??2013-11-04?14:23??QuickSort1
-----------?---------??----------?-----??----
????????????????35141????????????????????11
評論
共有 條評論