歡迎您光臨本站 註冊首頁

JAVA四大排序介紹

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
本文將給大家介紹java的四種排序,其中選擇法是冒泡法的改進,SHELL排序法是插入法的改進.所以從根本上來說可以歸納為兩種不同的排序方法:即:插入法&冒泡法.

一、 插入法

遍歷排序集合,每到一個元素時,都要將這個元素與所有它之前的元素遍歷比較一遍,讓符合排序順序的元素挨個移動到當前範圍內它最應該出現的位置.交換是相鄰遍歷移動,雙重循環控制實現.這種排序法屬於地頭蛇類型,在我的地牌上我要把所有的東西按一定的順序規整,過來一個,規整一個處理代碼如下:

public void sort(int[] data) {

int temp; for(int i=1;

i〈data.length; i )

{ for(int j=i; (j〉0)&&(data[j]〉data[j-1]); j--)

{ temp=date[j]; data[j]=data[j-1]; data[j-1]=temp; } } }

二、冒泡法

比較容易,它的內層循環保證遍歷一次后,集合中最小(大)元素出現在它的正確位置,下一次就是次小元素…該方法在集合分佈的各種情況下交換移動的次數基本不變,屬於最慢的一種排序.實現也是雙重循環控制.這種排序法屬於過江龍,就是要找到極端,但是過獎龍也有大哥,二哥等,所以他們只能是大哥挑了二哥挑.處理代碼如下:

public static int [] maopao(int[] data) {

for(int i=0; i〈data.length-1; i ){

for(int j=i 1; j〈data.length; j ){

if(data〈data[j]){

temp=data;

data=data[j];

data[j]=temp; }}

return data;

三、選擇法

該方法只是通過遍歷集合記錄最小(大)元素的位置,一次遍歷完后,再進行交換位置操作,類似冒泡,但在比較過程中,不進行交換操作,只記錄元素位置.一次遍歷只進行一次交換操作.這個對與交換次序比較費時的元素比較適合.這種排序法比冒泡法要城府要深的多,我先記住極端數據,待遍曆數據完了之後,我再處理,不像冒泡法那樣只要比自己極端一點的就要處理,選擇法只處理本身範圍內的最極端數據

public static void xuanze(int[] data) {

int temp;

for (int i = 0; i〈data.length; i ) {

int lowIndex = i;

for (int j = data.length - 1; j 〉i; j--) {

if (data[j] 〉data[lowIndex]) {

lowIndex = j; }

} temp=data;

data=data[lowIndex];

data[lowIndex]=temp; }}

四、Shell排序

它是對插入排序的一種改進,是考慮將集合元素按照一定的基數劃分成組去排序,讓每一組在局部範圍內先排成基本有序,在進行一次所有元素的插入排序.



public void sort(int[] data) {

for(int i=data.length/2; i〉2; i/=2){

for(int j=0; j〈i; j ){

insertSort(data,j,i); }

insertSort(data,0,1); }

private void insertSort(int[] data, int start, int inc) {

int temp;

for(int i=start inc;

i〈data.length; i =inc){

for(int j=i; (j〉=inc)&&(data[j]〈data[j-inc]); j-=inc){

? temp=data[j];

data[j]=data[j-inc]

data[j-inc]=temp; }


[火星人 ] JAVA四大排序介紹已經有415次圍觀

http://coctec.com/docs/java/show-post-59848.html