面試中一定要準備的7種排序演算法

2021-09-12 03:33:27 字數 2046 閱讀 8036

1.氣泡排序

public int bubblesort(int arr) }}

return arr;

}

氣泡排序的改進

// 稍微優化一下,對於排序好的如123456789,會一直交換多次

public void bubblesortbetter(int arr) }}

}

2.選擇排序

public void choosesort(int arr)

}if (min != i) }}

3.插入排序

public void insertsort(int arr)

arr[j + 1] = temp;}}

}

4.希爾排序

// 排序是不穩定的,最壞時間複雜度o(n^1.5),平均時間複雜度o(nlogn);

// 步長一般都用2,但是最後只要保證gap=1就可以。

public void shellsort(int arr)

arr[j + gap] = temp;

}gap = gap / 2;}}

5.堆排序

// 堆的刪除,只能刪除a的節點,將交換後的節點和兒子比較,選最小的乙個作為頭節點。

// 從i節點開始調整,n為節點總數 從0開始計算 i節點的子節點為 2*i+1, 2*i+2

public void heapadjust(int arr, int i, int n)

if (temp < arr[index])

// 將最小兒子上移動

arr[i] = arr[index];

i = index;

index = 2 * i + 1;

}// 以為temp一直沒有變,而且用來作為比較的參考值,

// 因此不交換而用這種方式就可以。

arr[index] = temp;

}// 堆化陣列

public void makearraytominheap(int arr, int n)

public void heapsort(int arr)

}

6.快速排序

public void quicksort(int arr, int low, int high)

int left = low;

int right = high;

int mid = arr[low];

while (low < high)

arr[low] = arr[high];

while (low < high && arr[low] <= mid)

arr[high] = arr[low];

}arr[low] = mid;

quicksort(arr, left, low - 1);

quicksort(arr, low + 1, right);

}

7.歸併排序

public void mergesort(int arr)

public void mergearray(int arr, int low, int high, int temp)

}public void merge(int arr, int temp, int low, int mid, int high) else

}while (left2 < high)

while (left1 < mid)

system.arraycopy(arr, low, temp, 0, temp.length);

}

人生中一定要堅守的格言

少許諾,多兌現 人一定要做自己擅長且喜歡的事情 專注如一 證明自己,用結果說話 聽多數人的意見,和少數人商量,自己做決定 始終保持學習的心態 幫助別人,成就自己 少埋怨,多做事 每天給自己乙個希望,試著不為明天而煩惱,不為昨天而嘆息,只為今天的美好 生活 夏日的烈日不見了,習習涼風已來,是時候出去玩...

在Git中一定要關注的crlf自動轉換

github 第一坑 換行符自動轉換 如果你已經做出了錯誤的選擇,也不需要重新安裝,可以直接使用命令列來修改設定。很簡單,直接開啟這貨自帶的命令列工具 git bash,輸入以下命令,再敲回車即可 git config global core.autocrlf false 在各作業系統下,文字檔案所...

工作中一定要掌握的流程分析利器 SIPOC模型

在工作中,我們經常會碰到各種問題時,感覺到束手無策,不知道從哪下手,好象整個流程都有問題,處處都是風險,這個時候,使用sipoc模型就能比較容易的識別出有問題的流程 同時在六西格瑪中,sipoc還能幫助界定專案範圍。sipoc是用來了解和認識過程的一種圖形,它是一種簡化了的過程流程圖。利用sipoc...