Java常用排序算法冒泡排序與選擇排序總結(jié)

概述

排序算法有好多種,也在特殊的場景中,我們經(jīng)常需要對我們的數(shù)據(jù)進行排序,這里對經(jīng)典的排序做一個記錄整理。

一冒泡排序

原理分析

冒泡排序其實就是對一組數(shù)以類似冒泡對形式,進行從大到小或者從小到大的排序,那么什么是冒泡呢?
其實也簡單,比如有一組數(shù)字:3,9,6,2


第一輪比較

以上圖只比較了第一輪,會冒出一個較大大,依此類推進行比較。

以此比較兩個數(shù)字,將較較小的數(shù)字一個一個冒上來,將相反的較大的數(shù)字往下沉,然后內(nèi)層循環(huán)每一輪比較就會冒出來一個最大數(shù)字,這樣有2層循環(huán)即可,外層循環(huán)完后,所有的數(shù)字就冒完了。

代碼實現(xiàn)(java)


public class MPTest {
      public static void main(String[] args) {
        int [] numbers={3,9,6,2};
        int temp=0;
        for(int i=0;i<numbers.length-1;i++){
            for(int j=0;j<numbers.length-1-i;j++){//內(nèi)層循環(huán)一次冒泡出一個比較小的數(shù)上來
                if(numbers[j]>numbers[j+1]){//如果第一個數(shù)字比第二個大則交換位置
                    temp=numbers[j];
                    numbers[j]=numbers[j+1];
                    numbers[j+1]=temp;
                    }
            }
        }
        for(int i=0;i<numbers.length;i++){
            System.out.println("第"+i+"個數(shù)字是:"+numbers[i]);
        }   
    }
    
}

輸出結(jié)果是:

第0個數(shù)字是:2
第1個數(shù)字是:3
第2個數(shù)字是:6
第3個數(shù)字是:9

二選擇排序

原理分析

選擇排序其實其實思路也是比較簡單的,也是2層循環(huán)。
主要思路是記錄一個最小值,然后內(nèi)層循環(huán)如果有比它小的就跟這個最小值交換位置,這樣就能確定第一位最小值,然后第二次循環(huán)也是如此,以此類推就能按照由小到大排序。

還是對這幾個數(shù)字進行排序:3 9 6 2

第一次循環(huán):2 9 6 3

第二次循環(huán):2 3 6 9

代碼實現(xiàn)(java)


public class XZTest {
    public static void main(String[] args) {
           int[] numbers = {3, 9, 6, 2};
            int temp=0;
            for (int i = 0; i < numbers.length; i++) {
                int min = i;
                for (int j = i + 1; j < numbers.length; j++) {
                    if(numbers[j]< numbers[min]){
                       min=j;
                    }
                }
                if(i!=min){
                    temp=numbers[i];
                    numbers[i]=numbers[min];
                    numbers[min]=temp;
                }
            }
            for(int i=0;i<numbers.length;i++){
                System.out.println("第"+i+"個數(shù)字是:"+numbers[i]);
            }   
    }
}

輸出結(jié)果是一樣對:

第0個數(shù)字是:2
第1個數(shù)字是:3
第2個數(shù)字是:6
第3個數(shù)字是:9
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 排序的基本概念 在計算機程序開發(fā)過程中,經(jīng)常需要一組數(shù)據(jù)元素(或記錄)按某個關(guān)鍵字進行排序,排序完成的序列可用于快...
    Jack921閱讀 1,576評論 1 4
  • 概述 排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    蟻前閱讀 5,308評論 0 52
  • 概述:排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    每天刷兩次牙閱讀 3,831評論 0 15
  • 姓名:冉喬琪~公司:天興醫(yī)藥 【日精進打卡第※112※天】 【知~學(xué)習(xí)】 《六項精進》2遍 共335遍 《大學(xué)》2...
    小小新醬閱讀 335評論 0 0
  • 到了成都第一要務(wù)是找好吃的。事先做了功課,發(fā)現(xiàn)好吃的太多了。有的靠近景點,有的在街巷。時間有限,決定跟著感覺走,就...
    流年芳華閱讀 614評論 6 11

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