氣泡排序最常見版:
void
bubblesort
(int
* array, size_t len)}}
}int
main()
;bubblesort
(array,6)
;for
(size_t i =
0; i <
6; i++
) cout << endl;
}
void
bubblesort
(int
* array, size_t len)}}
}int
main()
;bubblesort
(array,6)
;for
(size_t i =
0; i <
6; i++
) cout << endl;
}
完整版,避免了只有已經有序的情況下,演算法仍然執行。參考大話資料結構382頁。
簡單選擇排序:
void
selectsort
(int
* array, size_t len)}if
(i != min)}}
intmain()
;selectsort
(array,6)
;for
(size_t i =
0; i <
6; i++
) cout << endl;
}
演算法思想:
直接插入排序:
希爾排序:
#include
using
namespace std;
void
shellsort
(int
* array,
int len)
array[j + increment]
= array[0]
;// array[i] = array[i - increment];
// array[i - increment] = array[0]; }}
}while
(increment >1)
;}intmain()
;shellsort
(array,9)
;for
(size_t i =
0; i <
10; i++
) cout << endl;
}
參考資料,大話資料結構:392
堆排序:
歸併排序:
#include
using
namespace std;
#define maxsize 10
void
merge
(int
* sr,
int* tr,
int i,
int m,
int n)
else}if
(i <= m)}if
(j <= n)}}
void
msort
(int
* sr,
int* tr1,
int s,
int t)
else
}void
mergesort
(int
* array,
int len)
intmain()
;mergesort
(array,10)
;for
(size_t i =
0; i <
10; i++
) cout << endl;
}
非遞迴:待實現 大話資料結構:416
快速排序:
#include
using
namespace std;
#define maxsize 10
intpartition
(int
* array,
int low,
int high)
array[low]
= array[high]
;while
(low < high && array[low]
<= pivotkey)
array[high]
= array[low];}
array[low]
= pivotkey;
return low;
}void
qsort
(int
* array,
int low,
int high)
}void
quicksort
(int
* array,
int len)
intmain()
;quicksort
(array,10)
;for
(size_t i =
0; i <
10; i++
) cout << endl;
}
參考資料:大話資料結構419 常見的排序演算法總結
include 演算法只是比較了元素為整數的內容.大部分的排序只是做了簡單的測試.僅供參考.void swap int a int b bool less int a,int b 對內部中的元素先找到k值,然後分兩塊 int partition int r,int lo,int hi while j...
常見的排序演算法總結
平時一直做專案,業務邏輯,對演算法這塊逐漸有了生疏 今天有空總結一下排序演算法 1 氣泡排序 氣泡排序的原理就是兩兩相比,從小到大的話前面比後面大就交換,從大到大的話前面比後面小就交換,比如有一組數 1,10,5,3,2 如何對它做排序 比如從小到大 第一步 1,10,5,3,2 源資料 1,10,...
常見的排序演算法總結
1.氣泡排序 就像冒泡一樣,從頭對比相鄰的兩個,大的 或者小的 就交換到後面,一直到序列有序。時間複雜度最壞,平均o n 2 最好的時候是初始序列有序,第一趟後就不在發生交換,停止排序時間複雜度o n 空間複雜度為o 1 a 11 2,41 7,22 80,67 1,0.1,88 def bubbl...