常見排序方法

2021-08-24 17:42:38 字數 1765 閱讀 1983

#include #include using namespace std;

const int maxsize = 100;

void myswap(int &a,int &b);

void bubblesort(int *a,int len);

void print(int *a,int len);

/*氣泡排序:時間複雜度:最壞情況o(n^2),最好情況o(n),平均情況o(n^2);空間複雜度:o(1);穩定,簡單*/

/*基本思想:外迴圈len-1次,從一端第乙個數開始依次和剩下的數比較交換*/

void bubblesort(int *a,int len)

} }}/*插入排序:時間複雜度:最壞情況o(n^2),最好情況o(n),平均情況o(n^2);空間複雜度:o(1);穩定,簡單*/

void insertsort(int *a,int len)

a[j+1] = tmp; }}

/*希爾排序:改進的插入排序*/

void shellsort(int *a,int len)

a[j+group] = tmp;

}group /= 3; }}

/*選擇排序:時間複雜度:最壞情況o(n^2),最好情況o(n^2),平均情況o(n^2);空間複雜度:o(1);不穩定,簡單*/

void selectsort(int *a,int len)

if(min != i)

myswap(a[i],a[min]); }}

/*堆排序:首先從len/2-1下標的位置開始至到0的位置進行大堆/小堆的調整,然後從0下標開始和len-i下標的元素進行交換,每進行

一次交換,對剩下的元素進行0下標的堆調整*/

void heapadjust(int *a,int len,int index)

}void heapsort(int * a,int len)

}//快速排序:時間複雜度:最壞情況o(n^2),最好情況o(nlog2n),平均情況o(nlog2n);

//空間複雜度:o(nlog2n);不穩定

int partition(int *p,int len)

else

}if(i>mid)

if(j>right)

k=0;

for(i=left;i<=right;i++)

p[i]=tmp[k++];

}void merge_sort(int *p,int len)

void myswap(int &a,int &b)

void print(int *a,int len)

int main()

; print(a,sizeof(a)/sizeof(int));

//insertsort(a,sizeof(a)/sizeof(int));

//bubblesort(a,sizeof(a)/sizeof(int));

//selectsort(a,sizeof(a)/sizeof(int));

//shellsort(a,sizeof(a)/sizeof(int));

heapsort(a,sizeof(a)/sizeof(a[0]));

//quick_sort(a,sizeof(a)/sizeof(a[0]));

//merge_sort(a,sizeof(a)/sizeof(a[0]));

print(a,sizeof(a)/sizeof(int));

return 0;

}

常見排序方法

1.氣泡排序 思想 兩兩比較,把較大的移到後面,多次迴圈後最終把最大的放到最後,接著對前面的數繼續迴圈,直到正序。因為像氣泡一樣,所以稱作氣泡排序。include define n 100 intmain for i 0 i printf d a i return0 如果覺得用for迴圈太過繁雜,也...

常見排序方法

比較常用的排序方法 公升序 氣泡排序 最常用的排序方法。大體思路就是每次選出乙個最大值,第二次選出次大值,基本上就是兩個for迴圈。雞尾酒排序 氣泡排序方法的變種,雞尾酒排序,待排序陣列首先從0 n 1找出最大值,然後n 2 0找出最小值,然後再從1 n 2找次大值 依次類推 乙個while迴圈,裡...

常見排序方法整理

建立乙個用於運算元組的工具類,其中包含著常見的對陣列的操作函式如 排序,最值等 author jepson version v1.0 public class arraytool 對給定的整數陣列進行直接插入排序 param arr 接收乙個元素型別為int的整數陣列 public static v...