數組排序(選擇排序和冒泡排序)


1、-------寄語

    對於初學JAVA的同學來說,排序是在陌生不過的一個基礎題了。但是由於自己剛剛步入學習JAVA的世界,很多東西不能很好的理解,導致自己雖然可以敲出代碼或者大致能夠想明白,

    但是對於解決問題的思想並沒有很好的深入。(其實一開始學習也沒必要太刨根問底,等到自己有一定的基礎了,有時間了再研究一下。抱着研究的態度感覺會更好一點。其實大部分目前的

    開發者都是經過了一段時間的培訓,在培訓的過程中,課程速度特別快,有時候我們必須要“不拘小節”,掌握培訓中的主流知識才是明智之舉。如果你正在培訓,請記住,抓住學習主線。)

2、-------分析+代碼

   目前對於數組的排序有主要的兩種,一種是選擇排序,一種是冒泡排序。當然大學學過數據結構的知道,還有一些其他的排序,這里就不說明了,有時間自己上網查查。其實排序在開發中並不常用,

   我們學習它是學一種思想,以后的業務邏輯中可能會用到,可能會有相似的邏輯或者培養了我們這種思想,我們今后可以舉一反三。不要為了題目而題目,說了一些題外話,不好意思,言歸正傳。

   (1)選擇排序(從小到大)

         1)思想:選擇排序,讓數組中的每一個數,依次與后面的數進行比較,如果前面的數大於后面的數,就進行位置的交換。這種說法或許有些人看不明白。換個說法,選擇排序:第一個數依次與

                  后面的數比較,第一次比較完之后最小的數在最前面 。

          不理解的看看圖應該就差不多了,真不明白就和明白的人討論討論吧。

              

 

         2)代碼

                 import java.util.Arrays;
                 /**
                  * 練習排序-選擇排序
                  * @author Administrator
                  *
                  */
                 public class Dome2 {
                            public static void main(String[] args) {
                                 //數組
                                 int[] arr = {5,3,7,2,6,7,6,5,4,1,9,8};
                                //第一次循環,是確定一個數依次和后面數的比較的數。
                                for (int i = 0; i < arr.length -1 ; i++) {
                                   //這個是和第一個數的比較的數
                                    for (int j = i+1; j < arr.length; j++) {
                                      //定義一個臨時的變量,用來交換變量
                                       int temp ;  
                                       if(arr[i]>arr[j]){
                                            temp =  arr[i];
                                            arr[i] = arr[j];
                                            arr[j] = temp;
                                       }
                                   }
                                }
                        //打印最后的排序結果
                        System.out.println(Arrays.toString(arr));
                         }
                }

  (2)冒泡排序(從小到大)    

         1)思想:相鄰兩個數進行比較,第一波比較后,最大的數在最后。(每比較完之后,后面的數就減少一個比較 )

                

         2)代碼

            import java.util.Arrays;
           /**
            * 練習排序--冒泡排序
            * @author Administrator
            *
            */
              public class Dome2 {
                    public static void main(String[] args) {
                       //數組
                       int[] arr = {5,3,7,2,6,7,6,5,4,1,9,8};
                       //外部循環
                       for(int i=0;i<arr.length-1;i++){
                            //相連兩個數的索引是利用內部循環
                            for(int index=0;index<arr.length-1;index++){
                            //同樣利用中間變量,注意區分與選擇排序的區分
                                 if(arr[index]>arr[index+1]){
                                     int temp=arr[index];
                                     arr[index]=arr[index+1];
                                     arr[index+1]=temp;
                                }
                           }
                       }
                        System.out.println(Arrays.toString(arr));
                 }
             }

            


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM