資料結構七大內部排序 演算法比較

2021-10-07 09:17:42 字數 3726 閱讀 4831

1、氣泡排序

#include

using

namespace std;

//氣泡排序

void

bubblesort

(int

*a,int n)}if

(exchange==

false)}

}//氣泡排序測試

intmain()

bubblesort

(nums,n)

;for

(int i=

0;i++i)

else

}delete

nums;

return0;

}

2、直接插入排序

#include

using

namespace std;

// 直接插入排序

void

insertsort

(int

*arr,

int n)

else}}

}// 測試插入排序

intmain()

insertsort

(arr, n)

;for

(int i =

0; i < n;

++i)

delete

arr;

return0;

}

3、簡單選擇排序

#include

using

namespace std;

const

int inf =

0x3f3f3f

;// 簡單的選擇排序

void

selectsort

(int

*arr,

int n)}if

(i != pos)}}

// 測試簡單選擇排序

intmain()

selectsort

(arr, n)

;for

(int i =

0; i < n;

++i)

delete

arr;

return0;

}

4、快速排序

#include

using

namespace std;

// 快速排序

void

quicksort

(int

*arr,

int low,

int high)

arr[i]

= arr[j]

; arr[j]

= temp;

while

(i < j && arr[i]

<= temp)

arr[j]

= arr[i]

; arr[i]

= temp;

}quicksort

(arr, low, i)

;quicksort

(arr, i+

1, high);}

}// 測試快速排序

intmain()

quicksort

(arr,

0, n-1)

;for

(int i =

0; i < n;

++i)

delete

arr;

return0;

}

5、希爾排序

#include

#include

using

namespace std;

// 希爾排序

void

shellsort

(int

*arr,

int n)

;for

(size_t k =

0; k < dk.

size()

;++k)

else}}

}}// 測試希爾排序

intmain()

shellsort

(arr, n)

;for

(int i =

0; i < n;

++i)

delete

arr;

return0;

}

6、歸併排序

#include

using

namespace std;

// 輔助陣列

int*tmp;

// 合併操作

void

merge

(int

*arr1,

int*arr2,

int left,

int mid,

int right)

else

}while

(i <= mid)

while

(j <= right)

t =0;

while

(left <= right)

}// 歸併排序

void

mergesort

(int

* arr,

int*dest,

int s,

int t)

else

}// 測試歸併排序

intmain()

mergesort

(arr, arr,

0, n-1)

;for

(int i =

0; i < n;

++i)

delete

tmp;

delete

arr;

return0;

}

7、堆排序

#include

using

namespace std;

// 調整

void

heapadjust

(int

*arr,

int i,

int n)

if(arr[k]

> tmp)

else

} arr[i]

= tmp;

}// 堆排序

void

heapsort

(int

*arr,

int n)

for(

int j = n -

1; j >0;

--j)

}// 測試堆排序

intmain()

heapsort

(arr, n)

;for

(int i =

0; i < n;

++i)

delete

arr;

return0;

}

附:

如果想看動畫來輔助理解,推薦:

資料結構 七大排序演算法總結

面試中,無論是問還是寫,排序被問到的次數總是很多。總結一些八大排序演算法。插入,希爾,選擇,堆 冒泡,快速 歸併 排序方法 初始序列有無影響 最好情況 最壞情況 插入排序 有正序有序這樣只需要比較n次,不需要移動。因此時間複雜度為o n 逆序有序這樣每乙個元素就需要比較n次,共有n個元素,因此實際複...

《資料結構》 內部排序演算法比較

題目 各種內部排序演算法的時間複雜度分析結果只給出了演算法執行時間的階,或大概執行時間。試通過隨機的資料比較各演算法的關鍵字比較次數和關鍵字移動次數,以取得直觀感受。基本要求 1 從以下常用的內部排序演算法至少選取5種進行比較 直接插入排序 折半折入排序 希爾排序 起泡排序 快速排序 簡單選擇排序 ...

資料結構和演算法 七大排序演算法實現

七大排序演算法實現 include using namespace std void swap int num1,int num2 1.選擇排序演算法 bool selectionsort int arr,int len if max len i 1 return true 2.氣泡排序演算法 bo...