基礎 排序演算法學習筆記

2021-08-20 08:57:22 字數 986 閱讀 9492

noip範疇常見的排序一般是這幾種

1、氣泡排序,選擇排序,插入排序

2、快速排序,歸併排序,堆排序

3、計數排序,基數排序,桶排序

前兩類是基於比較的,第三類是基於統計的。

第一類都是o(n^2)的,第二類都是o(nlogn)的。

//氣泡排序

//1.相鄰的資料兩兩比較,小數放前面,大數放後面

//2.這樣每一次操作過後最小的數就被排在了最前面

void bubblesort(int a, int n)

}//插入排序

//1.資料分為兩部分,一開始有序部分包含1個元素

//2.依次將無序部分的元素插入到有序部分當中

void insertsort(int a, int n)

a[j+1] = k; //出來的時候j多減了1,要加回去

//for(int i = 1; i <= n; i++)cout

}//選擇排序

//1.在未排序序列中找到最小的元素,記錄位置

//2.將它放到已排序序列的末尾(和第乙個無序元素交換即可)

void selecsort(int a, int n)

}//快速排序

//1.每次選擇乙個基準數,把比之小的都放到其左邊,大的都放到其右邊

//2.排放時候的細節

void quicksort(int a, int n, int l, int r)

//將基準數歸位

a[l] = a[i]; //相遇的位置

a[i] = k; //

quicksort(a,n,l,i-1);//遞迴後不用考慮基準數

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

}

給出對比

更多的佔坑待填。。。

演算法學習 基礎排序演算法

這篇文章主要講解3個基礎的排序演算法,選擇排序,插入排序,以及氣泡排序,其時間複雜度都是0 n 2 級別的,實現 使用c 語言。首先給定乙個元素是無序的整數陣列 需要對這個陣列中的8個整數進行從小到大的排序。選擇排序的基本思路 首先從起始位置index 0開始,遍歷一遍陣列,獲取到最小的元素值ind...

排序演算法學習筆記

直接插入 二分法插入 希爾插入 氣泡排序 快速排序 插入排序是一種遞迴思想,由n 1趟排序組成。初始時,只考慮陣列下標0,只有乙個元素,預設是有序的。然後第一趟 對下標為1的元素進行排序,保證陣列 0,1 上的元素有序 第二趟 對下標2處的元素進行排序,保證陣列 0,2 上的元素有序 第n 1趟對下...

基礎演算法學習筆記

解決演算法問題的思路 1 列舉 核心問題 1.避免無用的組合可以減少列舉的次數 2.找到列舉的規律 3.是否存在乙個區域性,一旦這個區域性確定,其他部分也確定了 2 遞迴 核心問題 1.後一項依賴前一項的結果,如等差 等比數列 2.從大到小考慮 3.本身問題的定義包含遞迴,如a的定義用到了自身a,並...