八大排序之選擇、冒泡、插入

1.選擇排序

思想: 每次在待排序的數(shù)字中找出最值,最后進(jìn)行交換。

代碼示例

要排序的數(shù)組為: int[] a = {3,5,2,6,37,8,64,72};

public class Test {
   public static void main(String[] args)  {
       int[] a = {3,5,2,6,37,8,64,72};
       selectSort(a);
   }

   public static void selectSort(int [] arr){
       if(arr == null || arr.length<2)
           return;              
       for(int i = 0; i <arr.length-1; i ++){
           int minIndex = i;
           for(int j = i +1; j < arr.length;j++){
               if(arr[minIndex]>arr[j])
                   minIndex = j;
           }
           if(i != minIndex)
               swap(arr, i, minIndex);
       }
   }
  public static void swap(int [] arr, int i, int j){
       arr[i] = arr[i]^arr[j];
       arr[j] = arr[i]^arr[j];
       arr[i] = arr[i]^arr[j];
   }
}

2.冒泡排序

思想

  • 冒泡排序每次能產(chǎn)生一個(gè)最大或最小的數(shù),每次都是邊比較變交換
  • 下一輪比上一輪少一次比較

代碼示例

public static void bubbleSort(int [] arr){
       if(arr==null ||arr.length<2)
           return;
       for(int i = arr.length-1;i >0;i--)
           for (int j = 0;j <i;j++)
                if(arr[i]<arr[j]){
                   swap(arr,i,j);
               }
   }

3.插入排序

將數(shù)據(jù)分為有序和無序兩部分,每次將無序的第一個(gè)數(shù)字跟前面的有序進(jìn)行比較,如果比其?。ɑ蛘叽螅┚徒粨Q,否則結(jié)束本次過程。

代碼示例

public static void insertSort(int [] arr){
       if(arr == null ||arr.length<2)
           return;
       for(int i = 1;i<arr.length;i++)
           for(int j = i-1;j>=0&&arr[j]>arr[j+1];j--)
               swap(arr,j,j+1);
   }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容