演算法之排序

2022-07-05 04:42:13 字數 1666 閱讀 4349

它重複地走訪過要排序的數列,依次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。

function

bubblesort(arr)

}}

return

arr;

}

通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,以此達到整個資料變成有序序列。

var quicksort = function

(arr)

const midindex = math.floor(arr.length / 2);

const mid = arr.splice(midindex, 1)[0];

const left = , right =;

arr.foreach(

function

(item)

else

})return

quicksort(left).concat([mid], quicksort(right));

}

每次從待排序的資料中選出最小(或最大)的乙個元素,存放在序列的起始位置,第二次從第二個開始,後面依次類推,直到全部待排序的資料元素排完。

function

selectionsort(arr)

}if(minindex !==i)

} return

arr;

}

先分解再合併,將有序子串行進行合併。

function

mergesort(arr)

const midindex = math.floor(arr.length/2);

const leftarr = arr.slice(0, midindex);

const rightarr =arr.slice(midindex);

return

merge(mergesort(leftarr), mergesort(rightarr));

}function

merge(left, right)

else

}

return

result.concat(left).concat(right);

}

堆分為大根堆和小根堆,是完全二叉樹。大根堆的要求是每個節點的值都不大於其父節點的值。

每次將乙個待排序的記錄,按照其關鍵字的大小插入到有序佇列的合適位置裡,從而得到乙個新的、個數加一的有序資料,演算法適用於少量資料的排序。

function

insertionsort(arr)

arr[preindex+1] =current;

} return

arr;

}

function

shellsort(arr)

for (gap; gap > 0; gap = math.floor(gap/3))

arr[j + gap] =temp;

}}

return

arr;

}

排序演算法之排序

private static void insertsort int ints 時間複雜度 o n 2 空間複雜度 o 1 private static void mergesort int ints,int left,int right private static void merge int ...

排序演算法 排序演算法之選擇排序

最近在學習排序演算法,就排序演算法中的四大經典排序 氣泡排序 快速排序 選擇排序 插入排序。會出一系列的講解排序演算法的部落格。今天繼快速排序之後整理一下選擇排序。選擇排序,就是從一列未排序的陣列中先選出最小 最大 的數,放在陣列的第一位,第一位原來的數字放在最小的原來的位置,再選出第二小的數,放在...

演算法之排序演算法

1.概述 排序演算法是計算機技術中最基本的演算法,許多複雜演算法都會用到排序。儘管各種排序演算法都已被封裝成庫函式供程式設計師使用,但了解排序演算法的思想和原理,對於編寫高質量的軟體,顯得非常重要。本文介紹了常見的排序演算法,從演算法思想,複雜度和使用場景等方面做了總結。2.幾個概念 1 排序穩定 ...