氣泡排序,基本思想:在要排序的一組數中,對當前還未排好序的範圍內的全部數,自上而下對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即:每當兩相鄰的數比較後發現它們的排序與排序要求相反時,就將它們互換。
public class bubblesort ;
int temp=0;
for(int i=0;ia[j+1])
} }
for(int i=0;i
選擇排序的基本思想:第i趟簡單選擇排序是指通過n-i次關鍵字的比較,從n-i+1個記錄中選出關鍵字最小的記錄,並和第i個記錄進行交換。先臨時記錄其位置,只有在一趟迴圈完以後確定了最小的資料,才會發生交換。
public class choicesort
for (int i = 0; i < a.length; i++)
} if (i != min)
} }
}
直接插入排序,基本思想:在要排序的一組數中,假設前面(n-1) [n>=2] 個數已經是排好順序的,現在要把第n個數插到前面的有序數中,使得這n個數也是排好順序的。如此反覆迴圈,直到全部排好順序。
publicclass insertsort ;
int temp=0;
for(int i=1;i=0&&temp小的在前
快速排序基本思想:
1.先從數列中取出乙個數作為基準數。
2.分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。
3.再對左右區間重複第二步,直到各區間只有乙個數。根據以上步驟,很容易得出答案c
public class quicksort ;
system.out.println(arrays.tostring(x));
int low = 0;
int high = x.length - 1;
quicksort(x, low, high);
system.out.println(arrays.tostring(x)); }
public static void quicksort(int arr, int low, int high)
//大的話也是繼續下乙個
while (arr[j] > pivot)
//如果這兩種情況都不是就交換
if (i <= j)
} // 遞迴呼叫兩個子部分
if (low < j)
quicksort(arr, low, j);
if (high > i)
quicksort(arr, i, high);
}}
歸併排序,基本排序:歸併(merge)排序法是將兩個(或兩個以上)有序表合併成乙個新的有序表,即把待排序序列分為若干個子串行,每個子串行是有序的。然後再把有序子串行合併為整體有序序列。
堆排序,基本思想:堆排序是一種樹形選擇排序,是對直接選擇排序的有效改進。堆的定義如下:具有n個元素的序列(h1,h2,...,hn),當且僅當滿足(hi>=h2i,hi>=2i+1)或(hi<=h2i,hi<=2i+1)(i=1,2,...,n/2)時稱之為堆。在這裡只討論滿足前者條件的堆。由堆的定義可以看出,堆頂元素(即第乙個元素)必為最大項(大頂堆)。完全二叉樹可以很直觀地表示堆的結構。堆頂為根,其它為左子樹、右子樹。初始時把要排序的數的序列看作是一棵順序儲存的二叉樹,調整它們的儲存序,使之成為乙個堆,這時堆的根節點的數最大。然後將根節點與堆的最後乙個節點交換。然後對前面(n-1)個數重新調整使之成為堆。依此類推,直到只有兩個節點的堆,並對它們作交換,最後得到有n個節點的有序序列。從演算法描述來看,堆排序需要兩個過程,一是建立堆,二是堆頂與堆的最後乙個元素交換位置。所以堆排序有兩個函式組成。一是建堆的滲透函式,二是反覆呼叫滲透函式實現排序的函式。
希爾排序(最小增量排序),基本思想:演算法先將要排序的一組數按某個增量d(n/2,n為要排序數的個數)分成若干組,每組中記錄的下標相差d.對每組中全部元素進行直接插入排序,然後再用乙個較小的增量(d/2)對它進行分組,在每組中再進行直接插入排序。當增量減到1時,進行直接插入排序後,排序完成。
java排序演算法整理(二)
利用交換資料元素的位置進行排序的方法稱為交換排序。常用的交換排序有氣泡排序法和快速排序法。1.氣泡排序 基本思想 設陣列中a中存放了n個資料元素,迴圈進行n 1趟排序過程 第一趟時,依次比較相鄰的兩個資料元素,若為逆序,則交換兩個資料元素,這樣數值最大的資料將被放置在a n 1 中,第二趟時,迴圈次...
基本排序 選擇排序 Java實現
選擇排序就是按照指定的先後順序依次從待排序的元素中選擇最大或最小的乙個元素,存放到序列的起始位置,直到完成全部排序為止。如上圖所示,假設乙個序列的初始狀態為,將序列由小到大進行排序,每次遍歷時,將最小的數前置,防止再已排序元素的後面,直到完成排序為止。第一次排序,將元素7與之後的其他元素進行比較,將...
基本排序 快速排序 Java實現
快速排序就是選擇乙個基準數,將比基準數大的元素和比基準數小的元素分別在基準數的左右側分割為兩部分,然後從兩部分中分別選取新的基準數進行左右分割,以此類推最終得到有序數列為為止。存在乙個序列,將其按照從小到大的順序進行排序。第一次排序,選取序列的第乙個元素7為基準數,從右往左查詢比基準數7小的元素,最...