總結幾種常用到的排序演算法,如下:
**1. 選擇排序
2. 插入排序
3. 氣泡排序
4. 歸併排序
5. 快速排序
6. 堆排序**
為方便起見,規定陣列為整形陣列,並要按遞增排序,並定義幾個方法:
private
static
void
exch(int a,int i,int j)
1.選擇排序
選擇排序的思想就是:找到陣列中最小的那個元素,將它和陣列的死乙個元素交換位置,在剩下的元素中找到最小的元素,將它與陣列的第二個元素交換位置。。。直到獎整個陣列排序。**如下:
public static void sort(int a)
}}
2.插入排序
插入排序的思想就是:將陣列中的每個元素向左移動,直到移動到它應該在的位置。**如下:
public
static
void
sort(int a)
}}
3.氣泡排序
氣泡排序的思想就是:臨近的兩個元素比較,將較大的往後移,遍歷一遍後,最大的元素就在最後,再重新遍歷前n-1個元素。**如下:
public
static
void
sort(int arr)}}
}
4.歸併排序:
歸併排序的思想就是:遞迴地將左右字陣列排序,並合成乙個大陣列。**如下:
public
static
void
sort(int a)
private
static
void
sort(int a,int x,int y)
private
static
void
merge(int a,int x,int m,int y)
for(int k=x;k<=y;k++)
}
5.快速排序:
快速排序的思想就是:選取陣列中的第乙個元素x,從第二個元素和最後乙個元素開始兩端向中間遍歷陣列,將比x小的元素和比x大的元素交換位置,直至兩指標相遇,相遇點就是x所在的位置,將x和這個位置的元素交換,再遞迴地遍歷x左右的子陣列。**如下:
public
static
void
sort(int a)
private
static
void
sort(int a,int x,int y)
private
static
intpartition(int a,int x,int y)
exch(a,x,j); //將第乙個元素放到正確的位置
return j;
}
6.堆排序
堆排序的思想就是:堆排序是基於二叉對的。先將陣列構造成有序堆,取出並刪除根節點(即最大值),將最後乙個元素放入根節點,並進行堆有序化操作,再刪除最大節點,以此,直至陣列有序。**如下:
public
static
void
sort(int a)
}private
void
sink(int k)
}
總結:以上6種是較為常用的排序演算法,時間複雜度分別為:
**1. 選擇排序 o(n^2)
2. 插入排序 o(n)-o(n^2)
以上兩種複雜度取決於輸入的排列情況;
3.氣泡排序 o(n^2)
4.歸併排序 o(nlogn) //需要額外空間
5.快速排序 o(nlogn)
6.堆排序 o(nlogn)**
在實際應用中可能對這些基本排序演算法進行優化。
參考書籍:演算法
幾種常見排序演算法的總結(Java版上)
排序操作在計算機程式設計中分為外部排序和內部排序。我們一般所說的排序演算法指的就是內部排序,即資料記錄在計算機記憶體中進行排序。上圖為內部排序的腦圖。下來九種排序演算法我們一一介紹。1 氣泡排序 1 基本思想 假設 n 個數進行排序,則需要比較 n 1 輪,第一輪比較 n 1 次,之後每輪比較減少 ...
常見的排序演算法 (冒泡 選擇排序)(Java版)
1.氣泡排序 演算法原理 比較相鄰的元素,若第乙個元素大於第二個元素,就交換它們倆個元素。讓每一對相鄰的元素都做相同的步驟,最後得到最後得元素為最大值。重複上述的步驟。package my public class bubblesort sort sort new sort sort.bubble ...
面試常用演算法總結 排序演算法(java版)
排序演算法 重要性不言而喻,很多演算法問題往往選擇乙個好的排序演算法往往問題可以迎刃而解 氣泡排序 bubble sort 也是一種簡單直觀的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經...