面試 排序演算法總結

2021-09-27 01:25:14 字數 924 閱讀 1436

空間複雜度

快速排序是一種原地排序,只需要乙個很小的棧作為輔助空間,空間複雜度為o(log2n),所以適合在資料集比較大的時候使用。

時間複雜度

時間複雜度比較複雜,最好的情況是o(n),最差的情況是o(n2),所以平時說的o(nlogn),為其平均時間複雜度。

具體操作過程

隨便取乙個值(6)將其為基準進行排序,分別從初始序列「6 1 2 7 9 3 4 5 10 8」兩端開始「探測」。先從右往左找乙個小於6的數,再從左往右找乙個大於6的數,然後交換他們,直到所有比6大的都在右邊比6小的都在左邊。

——————

隨後再再將6的左右都分成兩列,再次進行以上操作。

直到不能再次拆分成新的子列為止。

時間複雜度

對長度為n的檔案,需進行 趟二路歸併,每趟歸併的時間為o(n),故其時間複雜度無論是在最好情況下還是在最壞情況下均是o(nlgn),歸併排序是一種穩定的排序,可用順序儲存結構。也易於在鍊錶上實現。

空間複雜度

需要乙個輔助向量來暫存兩有序子檔案歸併的結果,故其輔助空間複雜度為o(n)

時間複雜度為o(n^2)。是穩定的排序方法。

將乙個資料插入已經排好的陣列中,

首先只有預設第乙個3為排好的數,因此就從第乙個開始插入,往後如此,乙個個從前面尋找位置插入。

從待排序的資料元素中選出最小(或最大)的乙個元素,存放在序列的起始位置,然後再從剩餘的未排序元素中尋找到最小(大)元素,然後放到已排序的序列的末尾。以此類推,直到全部待排序的資料元素的個數為零。選擇排序是不穩定的排序方法

面試排序演算法總結

從第二個元素開始,每次選擇乙個元素插入到之前已經排好序的部分。選擇插入位置的時候從後往前,將帶插入元素取出,依次後移大於帶插入元素的數。演算法複雜度 最好是正序有序,需要n次比較。最差逆序有序,複雜度o n2 平均複雜度o n2 插入排序是穩定的 void insertsort int a,int ...

面試排序演算法個人總結

總結了很久的排序演算法,自己測試了很多次,一直寫在筆記本上,還是怕弄丟了,還是貼到部落格上面來吧 氣泡排序 交換排序 氣泡排序 param arr public static void bubblesort long arr if exchange 0 插入排序 直接插入排序 param arr p...

面試常考 排序演算法總結

排序在各次面試的過程中問道的次數不少,氣泡排序和快速排序尤多。因此做一些總結,尤其是 部分。1.氣泡排序 1 思想 在一組數中,對當前未排好序的數,自上而下地對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的數往上冒。2 複雜度 平均情況 o n 2 最壞情況 o n 2 逆序有序 最好情況...