基礎的演算法
-
插入排序(這個效率還是可以的,一個陣列有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基礎演算法基礎學演算法 第六彈 遞迴演算法遞迴
- 基礎演算法之排序演算法演算法排序
- 基礎莫隊演算法演算法
- AcWing演算法基礎1.2演算法
- 最基礎的分類演算法(KNN)演算法KNN
- 演算法學習 - 基礎排序演算法演算法排序
- 演算法基礎---二分演算法演算法
- 演算法基礎–貪心策略演算法
- 演算法基礎 --- 日常總結演算法
- 演算法基礎學習2演算法
- 基礎夯實:基礎資料結構與演算法(一)資料結構演算法
- 演算法基礎:排序演算法:選擇排序演算法排序
- 2018年第七週-基礎的排序方法(三種基礎排序演算法簡介)排序演算法
- [今日白學]元件的基礎的基礎的基礎元件
- 八大基礎演算法 自己的通俗理解演算法
- 【基礎】演算法的時間複雜度分析演算法時間複雜度
- C++常見函式的基礎演算法C++函式演算法
- 演算法基礎 --- 從swap開始演算法
- 演算法基礎思維導圖演算法
- Go基礎,gRPC合集,演算法合集GoRPC演算法
- 基礎演算法之快慢指標演算法指標
- 演算法專項-基礎100題演算法
- 演算法基提升礎學習2演算法
- 演算法基礎提升學習3演算法
- 演算法基礎提升學習1演算法
- 演算法基礎知識總結演算法
- 圖論演算法遍歷基礎圖論演算法
- JVM-垃圾收集演算法基礎JVM演算法
- PHP演算法之四大基礎演算法PHP演算法
- python基礎中的基礎Python
- Python <演算法思想集結>之初窺基礎演算法Python演算法
- PHP基礎演算法之快速排序法PHP演算法排序
- 演算法基礎 --- 十大排序演算法排序
- 遞推演算法與遞推套路(演算法基礎篇)演算法
- AdaBoost演算法解密:從基礎到應用的全面解析演算法解密
- PHP基礎演算法之選擇排序法PHP演算法排序