日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

基礎(chǔ)教程:對Java中四種基本排序的總結(jié)

 WindySky 2007-05-25

JAVA四種基本排序,包括冒泡法,插入法,選擇法,SHELL排序法.其中選擇法是冒泡法的改進,SHELL排序法是 插入法的改進.所以從根本上來說可以歸納為兩種不同的排序方法:即:插入法&冒泡法

一 插入法:

遍歷排序集合,每到一個元素時,都要將這個元素與所有它之前的元素遍歷比較一遍,讓符合排序順序的元素挨個移動到當(dāng)前范圍內(nèi)它最應(yīng)該出現(xiàn)的位置。交換是相鄰遍歷移動,雙重循環(huán)控制實現(xiàn).這種排序法屬于地頭蛇類型,在我的地牌上我要把所有的東西按一定的順序規(guī)整,過來一個,規(guī)整一個.

處理代碼如下:

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; }
            }
            }

二冒泡法:

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

處理代碼如下:

public static int [] maopao(int[] data) {
            int temp;
            for(int i=0; i〈data.length-1; i++){
            for(int j=i+1; j〈data.length; j++){
            if(data[i]〈data[j]){
            temp=data[i];
            data[i]=data[j];
            data[j]=temp;
            }
            }
            }
            return data;

三選擇法:

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

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[i];
            data[i]=data[lowIndex];
            data[lowIndex]=temp;
            }
            }

四 Shell排序:

它是對插入排序的一種改進,是考慮將集合元素按照一定的基數(shù)劃分成組去排序,讓每一組在局部范圍內(nèi)先排成基本有序,最后在進行一次所有元素的插入排序。

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;
            }
            }
            }

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多