JAVA四種基本排序

來源:互聯網
上載者:User

JAVA四種基本排序,包括冒泡法,插入法,選擇法,SHELL排序法.其中選擇法是冒泡法的改進,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) {
                                                            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;

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

                     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排序:它是對插入排序的一種改進,是考慮將集合元素按照一定的基數劃分成組去排序,讓每一組在局部範圍內先排成基本有序,最後在進行一次所有元素的插入排序。                                             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;
                                                                                                                                  }
                                                                                                                                  }
                                                                                                                                   }以上就是四種資料基本排序,晚餐後再規整進階排序.

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.