一. 氣泡排序
// 思路:比較相鄰的元素,每次比較都會生成最大或者最小值放在最後,所以每輪比較次數會遞減
function
sort(arr) }}
}複製**
二. 快排
// 思路:雙指標 + 遞迴分治。每次比較都能找到基值的位置,然後遞迴比較基值左右的部分
function
sort(arr, start, end)
[arr[start], arr[left]] = [arr[left], arr[start]];
// 左右分治
sort(arr, start, left - 1);
sort(arr, left + 1, end);
}複製**
三. 選擇排序
// 思路:和冒泡有點相似,每輪比較得出該輪的最小值,然後把最小值放在最前面;然後比較剩下的值,得出次小值。
function
sort(arr)
return arr;
}複製**
四. 插入排序
// 思路: 從陣列的第二項開始,將元素和該元素之前的元素級比較,如果比前面的元素小,則繼續往前比較,直至
比較到第乙個位置或者出現該元素大於前面的元素為止。將該元素插到這個位置。
function sort(arr)
if (j != i)
}return arr;
}複製**
五. 希爾排序
思路: 。。。。。。
function
sort(arr)
} }return arr;
}複製**
六. 計數排序
思路: 建立另乙個陣列來對映**陣列,對映規則為陣列的索引對應**陣列的值,陣列索引對應的值對映**陣列值出現的次數。
舉個例子:
const originarr = [4,3,2,1,3,2]; => const maparr = [0, 1, 2, 2, 1];
實現:function
sort(arr)
const results = ;
let index = 0;
for (let j = 0; j < arr2.length; j += 1)
} return results;
}複製**
排序演算法集合
氣泡排序 public static int maopao int param return param 快速排序 public static int quick int param,int left,int right return param 分割陣列,相當於分治演算法,快速排序的核心 priv...
排序演算法集合
從未排序的集合中找出乙個元素,依次與已排序的集合元素進行比較,如果滿足規則,小於或是等於,直接插入,依次迴圈,直至待排序集合元素為空。清單.插入排序 直接插入排序 param arr public void insertsort int arr 從待排序元素集合中,找出其中最大或是最小的元素,插入到...
排序演算法集合
就按照 演算法導論 裡面的順序寫吧 原理都不講了,只是貼一下 給參考。其實書上也寫得很清楚,我只是用c 實現出來而已。1.歸併排序 merge sort include include include include include using namespace std 二路歸併排序 遞迴實現 v...