Algorithm c 實現各種排序演算法

2021-08-08 20:40:11 字數 2351 閱讀 6560

#include 

#define size 10

using

namespace

std;

void print(int arr, int n)

void swap(int &a, int &b)

/*氣泡排序:持續比較相鄰兩個數最多n趟

最好 最壞 平均 空間 穩定性 複雜性

o(n) o(n^2) o(n^2) o(1) 穩定 簡單

*/void bubblesort(int arr, int n)

if (exchange == 0) //如果某一趟一次也沒有交換,則說明已經是乙個有序序列

break;

}}/*

堆排序:構造大(降序)/小(公升序)頂堆,

最好 最壞 平均 空間 穩定性 複雜性

o(nlog2n) o(nlog2n) o(nlog2n) o(1) 不穩定 較複雜

*///該函式用於判斷當前節點是否有左右子樹,以及有必要的話交換當前節點與左右子節點中較小的那個

void heapswap(int arr,int root,int n)

else

if (left <= n) //如果右節點大於n,而存在左節點的話

if (arr[root] > arr[left])

swap(arr[root], arr[left]);

}void heapadjust(int arr, int root, int n)

void heapsort(int arr, int n)}/*

選擇排序:每次從未排序的陣列中找出最大(降序)或最小(公升序)的元素與未排序陣列最前面的元素交換

最好 最壞 平均 空間 穩定性 複雜性

o(n^2) o(n^2) o(n^2) o(1) 不穩定 較簡單

*/void selectionsort(int arr, int n)

}}/*

最好 最壞 平均 空間 穩定性 複雜性

o(n) o(n^2) o(n^2) o(1) 穩定 較簡單

*/void insertionsort(int arr, int n)}/*

快速排序:挖坑填數

最好 最壞 平均 空間 穩定性 複雜性

o(nlogn) o(n^2) o(nlogn) o(1) 不穩定 較簡單

*/void quicksort(int arr, int n, int l, int r)

while (i < j&&arr[i] < key)

i++;

if (i < j)

arr[i] = key;

quicksort(arr, n, l,i-1);

quicksort(arr, n, i+1, r);

}}int main();

int arr2[size] = ;

cout

<< "源陣列:"

<< endl;

print(arr1, size);

//氣泡排序:公升序

bubblesort(arr1, size);

cout

<< "氣泡排序:公升序"

<< endl;

print(arr1, size);

//堆排序:降序

cout

<< "堆排序:降序"

<< endl;

heapsort(arr1, size);

print(arr1, size);

//選擇排序:公升序

cout

<< "選擇排序:公升序"

<< endl;

selectionsort(arr1, size);

print(arr1, size);

//插入排序:降序

cout

<< "插入排序:降序"

<< endl;

insertionsort(arr1, size);

print(arr1, size);

//快速排序:公升序

cout

<< "快速排序:公升序"

<< endl;

quicksort(arr1, size, 0, size-1);

print(arr1, size);

system("pause");

return

0;}

C 實現各種排序 快排 插排 冒泡

1 插入排序 插入排序 主要思想 將陣列中的第乙個數認為是有序排列,剩下的n 1個數與第乙個數比較,再進行排序 有兩層迴圈,第一層控制排序的趟數,第二層控制每一趟比較的個數 include using namespace std int main for int i 0 i 10 i cin a i...

各種排序 冒泡,歸併,快排等實現與對比。

排序的呼叫方法 n為陣列,測試了5萬條資料。long starttime system.currenttimemillis 獲取開始時間 system.out.println 排序開始 starttime sort n long endtime system.currenttimemillis 獲取...

Python 實現快排 堆排

原理 公升序 選取陣列的首個元素做為中間值,快取這個中間值,該位置變為空 從右到左和中間值對比,找到第乙個小於中間值的元素,把該值放到左邊的空位,該位置變為空 從左到右和中間值對比,找到第乙個大於中間值的元素,把該值放到右邊的空位,該位置變為空 重複步驟2和3,直到左右空位相交,然後把快取的中間值填...