簡單的排序演算法

2021-10-09 11:43:41 字數 2612 閱讀 8224

/** 排序演算法 */

// 需要排序的陣列

let nums = [5, 1 , 2, 3 , 4 , 6, 9, 7, 10, 8];

// let nums = [1,6,5];

class sortclass

/*** quicksort 找出乙個基準值a,把比a小的放入左邊,比a大的放入右邊 可以隨機獲得a;

* 平均時間複雜度為 o(nlogn)

* @param left

* @param right

* @returns

* @memberof sort

*/quicksortf(left,right)

// 把所有比基準值a小的放入a的左側。比基準值a大的放入a的右側

let a = nums[left],l = left,r = right;

while(l < r)

nums[l] = a;

// 對基準值a的左側,重新定義基準值,重複上述操作

this.quicksortf(left,l-1);

// 對基準值a的右側,重新定義基準值,重複上述操作

this.quicksortf(r+1,right);

}/**

* 氣泡排序 相鄰資料兩兩比較,進行交換操作

* 平均時間複雜度為 o(n^2)

* @memberof sortclass

*/bubblesort()}}

}/**

* 選則排序 找出最小值(最大值)放入首位

* 平均時間複雜度為 o(n^2)

* @memberof sortclass

*/selectionsort()}}

}/**

* 插入排序 選定乙個值,從右向左進行查詢,找出第乙個比他要小的資料,放入它的後面

* 平均時間複雜度為 o(n^2)

* @memberof sortclass

*/insertsort()else}}

}/**

* 計數排序 其排序速度快於任何比較排序演算法。當k不是很大並且序列比較集中時,計數排序是乙個很有 效的排序

* 統計陣列nums中每個值為i的元素出現的次數,存入陣列arry的第i項;

* 統計完成後,按順序取出arry裡面的值,重新放入nums

* 時間複雜度是o(n+k)

* @memberof sort

*/countingsort()

arry[nums[i]]++;

}let index = 0,i = 0;

while(index < arry.length)

index++;}}

/*** 基數排序

* 從左到右按位排序, 先排個位, 再排十位,百位... 需要用到計數排序的方法-使用陣列計數

* @memberof sort

*/_radixsort()

// 計數arry

let arrycount = new array(10);

// 儲存新的資料的array

let arrytemp = new array(nums.length);

// let rate = 1;

for(let i = 0;i < t;++i))

// 更具計數值。得到陣列值對應的位置

// total 初始值, 或者計算結束後的返回值。

// item 當前元素

// index 當前元素的索引

arrycount.reduce((total, item, index)=>)

// 最新的結果

for(let i = nums.length - 1;i >= 0;--i)

// 將temp相同位置的值負值給ary, 不能直接 ary = temp

nums = nums.map((item, index)=>arrytemp[index]);

// 之後操作arrytemp等於操作nums

// nums = arrytemp;

rate = rate * (i+1) * 10;

}arrycount = null;

arrytemp = null;

}}

// 排序類

let sortclass = new sortclass();

// quicksort

// let left = 0,right = nums.length - 1;

// sortclass.quicksortf(left,right);

// console.log("quicksortf",nums);

// 氣泡排序

sortclass.bubblesort();

console.log("bubblesort",nums);

// 選擇排序

// sortclass.selectionsort();

// console.log("selectionsort",nums);

// 插入排序

// sortclass.insertsort();

// console.log("insertsort",nums);

排序演算法簡單演算法

1 直接插入排序 把後面未排序部分的首個數插入到前面已排序部分的正確位置上去,直到全部排好順序。直接插入排序是穩定的,演算法時間複雜度o n 2 2 shell排序 將要排序的一組數按某個增量g分成若干組,每組中記錄的下標相差g。對每組中全部元素進行直接插入排序,然後縮小增量g,在每組中再進行排序。...

演算法 常見的排序演算法 簡單排序

常見的一些排序演算法,一些是從書上看的,一些則是參考別人的部落格,從雜亂無章的部落格裡提取實屬不易,多謝理解 直接插入排序演算法的基本思路 把未排序的資料放在乙個已排序好的陣列裡面 演算法名稱 平均時間複雜度 最差時間分析 空間複雜度 穩定度直接插入排序 o n2 o n2 o 1 穩定所有排序方法...

幾個簡單的排序演算法

排序演算法 include using namespace std void insertsort int r,int n 直接插入 void shellsort int r,int n shell排序 void selectsort int r,int n 直接選擇排序 void bubbleso...