七大排序演算法收藏版

2021-09-30 10:16:16 字數 1910 閱讀 8081

1.冒泡

void bubblesort(int a,int len)}}

2.插入排序

void insertsort(int a,int len)

a[j+1] = temp;}}

}3.堆排序

/* 堆排序: 

* |len| data序列中最後乙個元素的索引號, 也是參加排序的元素個數, 

* 注意不是data序列的元素個數 

* 1.  

*  data序列中第1個元素(data[0])不參加排序 

* 2.  

*  總共執行|len - 1|趟排序,每一趟排序確定未排序序列中的最大值的位置,並執行一次adjust函式 

* 3. 

*  無論是最壞情況還是平均情況,堆積排序的時間複雜度都是o(n*log2n) 

* 4. 

*  堆積排序的空間複雜度是o(1), 適合於len較大的序列排序 

* 5. 

*  堆積排序不適合在鍊錶上實現 

* 6. 

*  堆積排序是不穩定排序,例如(5, 4, 3, 2, 2, 2, 1) 

*/  

void adjust(int a,int root,int len)

a[i/2] = a[0];

}void heapsort(int a,int len)

}4. 歸併排序

void mergearray(int a,int first,int mid,int last,int temp)

while(i<=m)

temp[k++] = a[i++];

while(j<=n)

temp[k++] = a[j++];

for(i=0;ia[first+i] = temp[i];

}void mergesort(int a,int first,int last,int temp)

}bool mergesort(int a,int len)

int *ptemp = new int[len];

if(ptemp==null)

return false;

mergesort(a,0,len-1,ptemp);

delete ptemp;

return true;

}5. 快速排序

#include

#include

#include

using namespace std;

int randominrange(int start,int end)

/*inline void swap(int *elem1,int *elem2)

*/inline void swap(int &a, int &b)

int partition(int a,int len, int start, int end)

int index = randominrange(start,end);

swap(a[end],a[index]);

int small = start -1;

for(index = start; index < end; ++index)}}

swap(a[++small],a[end]);

return small;

}void quicksort(int a,int len, int start, int end)

6. 選擇排序

void selectsort(int a,int len)

}if(min != i)}}

7.希爾排序

#include

#include "stdlib.h"

using namespace std;

void shellsort(int a,int len)}}

}

七大排序演算法

氣泡排序 void bubble int a,int n 選擇排序 void select sort int a,int n n為陣列a的元素個數 將第i 小的數,放在第i 個位置 如果剛好,就不用交換 if i min index 插入排序 typedef int elementtype void...

七大排序演算法

七大排序分類 插入排序 直接插入排序 穩定 希爾排序 不穩定 選擇排序 簡單選擇排序 穩定 堆排序 不穩定 交換排序 氣泡排序 穩定 快速排序 不穩定 歸併排序。直接插入排序 時間複雜度 o n 2 演算法穩定性 穩定void straightinsertsort int a,int n 氣泡排序 ...

七大排序演算法

首先回顧下各種排序的主要思路 一 氣泡排序 氣泡排序主要思路是 通過交換使相鄰的兩個數變成小數在前大數在後,這樣每次遍歷後,最大的數就 沉 到最後面了。重複n次即可以使陣列有序。氣泡排序改進1 在某次遍歷中如果沒有資料交換,說明整個陣列已經有序。因此通過設定標誌位來記錄此次遍歷有無資料交換就可以判斷...