常用排序演算法

2021-07-29 00:25:18 字數 1174 閱讀 5482

1. 插入排序

1.直接插入排序:不斷從無序表中拿出元素插入到有序表中的合適位置。

最好情況下的時間複雜度為o(n).

最壞情況下的時間複雜度為o(n^2).

public

int insertsort(int r)

r [j + 1] = r [0];

}return r;

}

2 . 希爾排序.:是對直接插入排序的一種改進。是將待排序的的記錄劃分為幾組,減少參與直接排序的資料量。

時間複雜度大約為(o^1.3)

public

int shellsort(int r)

r [j + d] = temp;}}

return r;

}

2. 交換排序

1.氣泡排序 :時間複雜度為o(n^2)

public

int bubblesort(int r)}}

return r;

}

2.快速排序 :是目前認為的最好的內部排序方法。

平均時間複雜度為o(nlog2n)

初始狀態越混亂,排序速度越快。越有序越慢,接近氣泡排序

.net 多個集合類提供的sort方法就是快速排序

public

intquicksort(int r, int low, int high)

r [i] = r [j];

while (i < j && r [i] < temp)

r [j] = r [i];

}r [i] = temp;

quicksort (r, low, i - 1);

quicksort (r, i + 1, high);

}return r;

}

3.選擇排序

1.直接選擇排序 :時間複雜度為o(n^2)

public

intselectsort(int r)

}if (i != k)

}return r;

}

常用排序演算法

筆者最近學習演算法,學了很久也只弄懂了幾個排序演算法,在這裡曬一下下,作為以後參考之用。一 為什麼要研究排序問題 許多計算機科學家認為,排序演算法是演算法學習中最基本的問題,原因有以下幾點 l有時候應用程式本身需要對資訊進行排序,如為了準備客戶賬目,銀行需要對支票賬號進行排序 l很多演算法將排序作為...

常用排序演算法

一 簡單排序演算法 由於程式比較簡單,所以沒有加什麼注釋。所有的程式都給出了完整的執行 並在我的vc環境 下執行通過。因為沒有涉及mfc和windows的內容,所以在borland c 的平台上應該也不會有什麼 問題的。在 的後面給出了執行過程示意,希望對理解有幫助。1.冒泡法 這是最原始,也是眾所...

常用排序演算法

排序演算法 最好時間 平均時間 最壞時間 輔助空間 穩定性 直接插入排序 o n o n 2 o n 2 o 1 穩定 希爾排序 o n 1.3 o 1 不穩定 直接選擇排序 o n 2 o n 2 o n 2 o 1 不穩定 堆排序 o n x lbn o n x lbn o n x lbn o ...