#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...