十大排序演算法

2021-10-08 10:17:16 字數 2911 閱讀 9538

//1,氣泡排序

void

bubblesort

(int arr,

int len)

}}

//2,選擇排序

void

selectsort

(int arr,

int len)

swap

(arr[i]

, arr[imin]);

}}

//3,插入排序

void

insertsort

(int arr,

int len)

arr[j +1]

= key;

}}

//4,希爾排序

void

shellsort

(int arr,

int len)

//對每乙個增值的所有待排序序列進行插入排序

while

(h >=1)

arr[k+h]

= tem;}}

//將增值遞減

h = h /3;

}}

//5,歸併排序

void

mergesort

(int arr,

int li,

int ri,

int tem)

//將左或右陣列中未放完的資料繼續放入臨時陣列中

while

(i<=mid)

while

(j<=ri)

//將臨時陣列的值複製到原陣列對應的位置,即li到ri中間

for(

int mi = li;mi<=ri;mi++

)}

//6,快速排序

void

quicksort

(int arr,

int li,

int ri)

// 如果隊尾元素小於tmp了,需要將其賦值給low

arr[low]

= arr[hight]

;// 當隊首元素小於等於tmp時,向後挪動low指標

while

(low < hight&&arr[low]

<= tem)

// 當隊首元素大於tmp時,需要將其賦值給high

arr[hight]

= arr[low];}

// 外層迴圈結束時low和high相等,此時的low或high就是tmp的正確索引位置

// 由原理部分可以很清楚的知道low位置的值並不是tmp,所以需要將tmp賦值給arr[low]

arr[low]

= tem;

// 進行迭代對low之前和之後的陣列進行相同的操作使整個陣列變成有序

quicksort

(arr, li, low -1)

;quicksort

(arr, low +

1, ri)

;}

//7,堆排序

void

heapadjust

(int arr,

int si,

int ei)}}

void

heapsort

(int arr,

int len)

for(

int i = len -

1; i >

0; i--

)}

//8,計數排序

void

countsort

(int arr,

int len)

// 建立差值大小的陣列

int d = vmax - vmin+1;

int*tem =

newint

[d];

for(

int j =

0; j < d; j++

)for

(int i =

0;i)int k =0;

for(

int i =

0; i < d; i++)}

}

#include

"stdafx.h"

#include

#include

using

namespace std;

//資料列印

void

printdata

(int arr,

int n)

cout << endl;

}int

main()

;int

*tem =

newint[10

];cout <<

"sort before: "

;printdata

(nums, n)

; cout <<

"sort after: "

;// bubblesort(nums, n);

// selectsort(nums, n);

// insertsort(nums, n);

// shellsort(nums, n);

// mergesort(nums, 0, n - 1, tem);

// quicksort(nums, 0, n - 1);

// heapsort(nums, n);

printdata

(nums, n)

; cout << endl;

delete

tem;

system

("pause");

return0;

}

十大排序演算法

1.非線性時間類排序 時間複雜度未突破 0 nlog 2n 不穩定的四個排序演算法 選擇排序 0 n2 希爾排序 0 n1.3 希爾排序實現python 快速排序 0 n log2 n 0 nlog 2n 0 nlog 2 n 快速排序實現c python 堆排序 0 n log2 n 0 nlog...

十大排序演算法

排序規則 從左至右依次增大 一 基於比較的排序演算法 插入排序 逐個遍歷未排序序列,將其在已排序序列中從右到左比較,直到遇到比自己小的數,然後將元素插入到那個數的後面,有序序列從左向右生長。選擇排序 在未排序序列中選擇最小的元素,將其插入到已排序序列的末尾,有序序列從左向右生長。氣泡排序 從左至右逐...

十大排序演算法

github 排序演算法是 資料結構與演算法 中最基本的演算法之一。排序演算法可以分為內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內部排序演算法有 插入排序 希爾排序 選擇排序 氣泡排序 歸併排序...