1、氣泡排序 bubble sort
最簡單的排序方法是氣泡排序方法。這種方法的基本思想是,將待排序的元素看作是豎著排列的「氣泡
」,較小的元素比較輕,從而要往上浮。在氣泡排序演算法中我們要對這個「氣泡
」序列處理若干遍。所謂一遍處理,就是自底向上檢查一遍這個序列,並時刻注意兩個相鄰的元素的順序是否正確。如果發現兩個相鄰元素的順序不對,即「輕
」的元素在下面,就交換它們的位置。顯然,處理一遍之後,「最輕
」的元素就浮到了最高位置;處理二遍之後,「次輕
」的元素就浮到了次高位置。在作第二遍處理時,由於最高位置上的元素已是「最輕
」元素,所以不必檢查。一般地,第
i遍處理時,不必檢查第
i高位置以上的元素,因為經過前面
i-1遍的處理,它們已正確地排好序。這個演算法可實現如下。
演算法如下:
/*** 氣泡排序
* * @param temp
*/public static void maopao(int temp) }}
}2、選擇排序 selection sort
選擇排序的基本思想是:對待排序的記錄序列進行
n-1遍的處理,第
1遍處理是將
l[1..n]
中最小者與
l[1]
交換位置,第
2遍處理是將
l[2..n]
中最小者與
l[2]
交換位置,
......,第i
遍處理是將
l[i..n]
中最小者與
l[i]
交換位置。這樣,經過
i遍處理之後,前
i個記錄的位置就已經按從小到大的順序排列好了。
當然,實際操作時,也可以根據需要,通過從待排序的記錄中選擇最大者與其首記錄交換位置,按從大到小的順序進行排序處理。
演算法如下:
/** *
選擇排序
*@paramsrc
待排序的陣列 */
voiddochoosesort(intsrc)
} src[samllestlocation]=src[i];
src[i]=temp;
printresult(i,src); }
}3
、插入排序 insertion sort
插入排序的基本思想是,經過i-1遍處理後,l[1..i-1]己排好序。第i遍處理僅將l[i]插入l[1..i-1]的適當位置,使得l[1..i]又是排好序的序列。要達到這個目的,我們可以用順序比較的方法。首先比較l[i]和l[i-1],如果l[i-1]≤ l[i]騆[1..i]已排好序,第i遍處理就結束了;否則交換l[i]與l[i-1]的位置,繼續比較l[i-1]和l[i-2],直到找到某乙個位置j(1≤j≤i-1),使得l[j] ≤l[j+1]時為止。
簡言之,插入排序就是每一步都將乙個待排資料按其大小插入到已經排序的資料中的適當位置,直到全部插入完畢。插入排序方法分直接插入排序和折半插入排序兩種,這裡只介紹直接插入排序,折半插入排序留到「查詢」內容中進行。
圖1演示了對4個元素進行直接插入排序的過程,共需要(a),(b),(c)三次插入。
圖1 對4個元素進行插入排序
在下面的插入排序演算法中,為了寫程式方便我們可以引入乙個哨兵元素l[0],它小於l[1..n]中任一記錄。所以,我們設元素的型別elementtype中有乙個常量-∞,它比可能出現的任何記錄都小。如果常量-∞不好事先確定,就必須在決定l[i]是否向前移動之前檢查當前位置是否為1,若當前位置已經為1時就應結束第i遍的處理。另乙個辦法是在第i遍處理開始時,就將l[i]放入l[0]中,這樣也可以保證在適當的時候結束第i遍處理。下面的演算法中將對當前位置進行判斷。
演算法如下:
/** *
插入排序
(while
迴圈實現)
*@paramsrc
待排序陣列 */
voiddoinsertsort1(intsrc)
src[j]=temp;
printresult(i+1,src); }
}/** *
插入排序
(for
迴圈實現)
*@paramsrc
待排序陣列 */
voiddoinsertsort2(intsrc)
else//
如果當前的數,不小前面的數,那就說明不小於前面所有的數, //
因為前面已經是排好了序的,所以直接通出當前一輪的比較
break; }
src[j]=temp;
printresult(i,src); }
}
Java幾種排序方法比較
package com.sort public class sort public int partition int a,int low,int high swap a,low,p pos return p pos public void quicksort int a,int low,int h...
Java實現幾種常見排序方法
1.冒泡演算法 就是每次相鄰的兩個元素比較,如果第乙個比第二個大,就交換位置,大的 下沉 小的 上漂 迴圈每次找出最大的那個,以此類推,比較length 1次。2.選擇排序 選擇排序是一種簡單直觀的排序方法,每次尋找序列中的最小值,然後放在替換當前迴圈的最小位的位置。3.插入排序 認為第乙個元素已經...
Java實現幾種常見排序方法
日常操作中常見的排序方法有 氣泡排序 快速排序 選擇排序 插入排序 希爾排序,甚至還有基數排序 雞尾酒排序 桶排序 鴿巢排序 歸併排序等。冒泡法排序 氣泡排序是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再...