基礎的演算法
-
插入排序(這個效率還是可以的,一個陣列有8萬個元素,排序大約6秒)
// 插入排序
// 思路 : 就是將n個排序的元素看成是一個有序和無序的列表,開始的時候有序的列表只包含一個元素,無序列表中包含n-1個元素,排序的的過程每次從無序的列表中取出第一個元素,吧他的排序碼與有序列表的排序碼進行比較,將他插入到有序列表中的適當位置,使他成為有序的列表。
void chaRuPaiXu() {int a[10]={1,5,9,8,7,6,3,5,8,4};
for (int i =1;i<10 ;i++){
// 儲存當前的的array【i】的值;
int insertVal = a[i];
// 拿到當前值的前一個index
int index = i-1;
// 判斷迴圈的條件
while (index>=0&&insertVal >a[index]) {
// 將arr【index】向後移動
a[index+1]=a[index];
// 讓index 向前移動
index--;
}
// 如果沒有進入迴圈,就不交換位置
a[index+1]=insertVal;
}
for (int j=0 ; j<10; j++) {
NSLog(@"%d",a[j]);
}
}
// 快速排序 核心思想就是遞迴
void sort (int left ,int right, int array[]){
int l = left;
int r= right;
int pivot = (int)array[(left+right)/2];
int temp =0;
while (l<r) {
while (array[l]<pivot) l++;
while (array[r]>pivot) r--;
if (l>=r) break;
temp = array[l];
array[l]=array[r];
array[r]= temp;
if (array[l]==pivot) --r;
if (array[r]==pivot) ++l;
if (l==r) {
l++;
r--;
}
if (left<r) sort(left,r,array);
if (right>1) sort(1,right,array);
}
}
相關文章
- 演算法基礎演算法
- 基礎演算法演算法
- 演算法基礎模板演算法
- 0基礎演算法基礎學演算法 第六彈 遞迴演算法遞迴
- 基礎演算法之排序演算法演算法排序
- 基礎莫隊演算法演算法
- 演算法基礎-字元移位演算法字元
- 最基礎的分類演算法(KNN)演算法KNN
- 你必須知道的基礎演算法演算法
- 前端基礎系列(三) -- 演算法 + 資料結構基礎前端演算法資料結構
- 演算法基礎---二分演算法演算法
- 演算法學習 - 基礎排序演算法演算法排序
- AcWing演算法基礎1.2演算法
- 演算法基礎 --- 日常總結演算法
- 演算法基礎–貪心策略演算法
- 演算法基礎學習2演算法
- RSA演算法基礎->實踐演算法
- 基礎夯實:基礎資料結構與演算法(一)資料結構演算法
- 演算法基礎:排序演算法:選擇排序演算法排序
- [今日白學]元件的基礎的基礎的基礎元件
- 圖論演算法遍歷基礎圖論演算法
- JVM-垃圾收集演算法基礎JVM演算法
- 演算法基礎 --- 從swap開始演算法
- 基礎演算法之快慢指標演算法指標
- 演算法基礎提升學習3演算法
- 演算法基礎提升學習1演算法
- 演算法基提升礎學習2演算法
- 演算法基礎知識總結演算法
- RSA演算法以及數學基礎演算法
- Python演算法:基礎知識Python演算法
- 【Java基礎】--演算法與陣列Java演算法陣列
- 【基礎】演算法的時間複雜度分析演算法時間複雜度
- 你需要知道的演算法之基礎篇演算法
- PHP演算法之四大基礎演算法PHP演算法
- Go基礎,gRPC合集,演算法合集GoRPC演算法
- PHP基礎演算法之快速排序法PHP演算法排序
- 演算法基礎 --- 十大排序演算法排序
- 基礎演算法系列 之希爾排序演算法排序