本程式參考了網上各位大牛和資料結構中的程式,vs2005執行通過,如有問題,請各位大牛指正。
實現的排序有:直接插入排序、折半插入排序、希爾排序、氣泡排序、快速排序、選擇排序、堆排序等等
#include using namespace std;
const int len = 100;
class csort
;csort::csort():length(len)
arr[j+1]=key;
} }}class binsertsort : public csort
;void binsertsort::sort()
else
}//找到應該插入的位置high+1,之後移位置
int key = arr[i];
for (int j=i-1;j>=high+1;j--)
//已經找到位置,把要排序的數放入其中
arr[high+1]=key; }}
class cshellinsert : public csort
;void cshellinsert::sort()//呼叫希爾排序
;//設定希爾排序的增量,呼叫希爾排序函式
for (int i=0;i<3;i++) }
void cshellinsert::shellinsert(int dk)//希爾排序函式,把直接插入排序中的1變成dk就好,直接插入排序中增量為1
arr[j+dk]=key;
} }}/*氣泡排序*/
class bubblesort:public csort
;void bubblesort::sort()
} }}/*快速排序*/
class cquicksort:public csort
;void cquicksort::sort()
int cquicksort::partition(int low,int high)
for (int j=length-1;j>0;j--) }
//要從小到大排序:建立大根堆,把頂端元素(陣列中第乙個元素)和陣列中 最後乙個未排 元素交換
//s表示調換的位置,m表示未排好序列的個數
void cheapsort::heapadjust(int s,int m)//調整推,變成大根堆
arr[s]=arr[i];
s=i;//這時,s應該指向剛剛調過去的位置,因為,在調整時,總是從上而下進行的,要從他的左孩子開始
} arr[s]=key;
}/*歸併排序*/
class cmergingsort:public csort
;void cmergingsort::sort()
void cmergingsort::mergesort(int left,int right)
else
}while(i<=mid)
while(j<=right)
for (i=0,k=left;k<=right;k++,i++)//歸併後的陣列對應的原來的陣列是 left--right 那段,因此還要把這段資料放到原陣列中
delete temp;
}int main()
{ csort *pcsort;//執行這條**時,是不呼叫類csort的建構函式的
//pcsort = new cinsertsort();//直接插入排序
//pcsort = new binsertsort();//測試折半插入
//pcsort = new cshellinsert();//測試希爾排序
//pcsort = new bubblesort();//氣泡排序
//pcsort = new cquicksort();//快速排序
//pcsort = new cselectionsort();//選擇排序
pcsort = new cmergingsort();//堆排序
cout<<"排序前:"cout<<"排序後:"<
C 實現常見排序演算法
本程式參考了網上各位大牛和資料結構中的程式,vs2005執行通過,如有問題,請各位大牛指正。實現的排序有 直接插入排序 折半插入排序 希爾排序 氣泡排序 快速排序 選擇排序 堆排序等等 include using namespace std const intlen 100 class csort ...
幾種常見的排序演算法c 實現
一 選擇排序 演算法思想 對於有n個元素的陣列,一共有n躺排序,每趟排序要保證前i ii項元素已經排好序,對於第i ii趟排序,從第i ii個元素開始遍歷陣列,將當前遍歷元素中最小的值與第i個元素交換。具體 實現如下 include include include using namespace s...
常見排序演算法 C
時間複雜度o n 2 原地,穩定.void bubble sort vector int nums if flag break 如果沒有交換說明已經有序,跳出迴圈 return 時間複雜度o n 2 原地,穩定.void insert sort vector int nums nums i 1 va...