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,並...