亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

排序算法圖解之Java選擇排序

 更新時間:2022年11月04日 11:37:52   作者:興趣使然黃小黃  
選擇排序的工作原理是:第一次從待排序的數(shù)據(jù)元素中選出最小(或最大)的一個元素,存放在序列的起始位置,然后再從剩余的未排序元素中尋找到最?。ù螅┰兀缓蠓诺揭雅判虻男蛄械哪┪?。本文通過圖片和示例介紹了選擇排序,需要的可以參考一下

1.選擇排序簡介

選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工作原理是:第一次從待排序的數(shù)據(jù)元素中選出最?。ɑ蜃畲螅┑囊粋€元素,存放在序列的起始位置,然后再從剩余的未排序元素中尋找到最小(大)元素,然后放到已排序的序列的末尾。以此類推,直到全部待排序的數(shù)據(jù)元素的個數(shù)為零。選擇排序是不穩(wěn)定的排序方法。

2.圖解選擇排序算法

選擇排序的基本思想如下:

第一次:從arr[0]~arr[n-1]中選取最小值,與arr[0]進行交換;

第二次:從arr[1]~arr[n-1]中選取最小值,與arr[1]進行交換;

第三次:從arr[2]~arr[n-1]中選取最小值,與arr[2]進行交換;

第 i 次:從arr[i]~arr[i-1]中選取最小值,與arr[i]進行交換;

總共通過n-1次,可以得到從小到大的有序序列。

以序列:{8, 3, 2, 1, 7, 4, 6, 5} 為例!分步驟圖解如下:

思路說明:

1.在每趟排序時,都假定當(dāng)前位置的元素為最小值,如果在遍歷過程中發(fā)現(xiàn)有比當(dāng)前位置元素還小的值,則替換最小值。(先將最小值記錄,此趟遍歷完成再替換)

2.選擇排序一共有數(shù)組大小-1趟排序。

3.選擇排序代碼實現(xiàn)

import java.util.Arrays;

/**
 * @author 興趣使然黃小黃
 * @version 1.0
 * 選擇排序
 */
public class SelectSort {

    public static void main(String[] args) {
        int[] array = {8, 3, 2, 1, 7, 4, 6, 5};
        System.out.println("排序前: " + Arrays.toString(array));
        selectSort(array);
        System.out.println("排序后: " + Arrays.toString(array));
    }

    //選擇排序
    public static void selectSort(int[] arr){
        //選擇排序過程
        for (int i = 0; i < arr.length - 1; i++) {
            int minIndex = i; //假定最小索引,最小值為第一個元素
            int min = arr[minIndex];
            for (int j = i + 1; j < arr.length; j++) {
                if (min > arr[j]){
                    //更新最小值
                    min = arr[j];
                    minIndex = j;
                }
            }
            //將最小值放進arr[i]
            if (i != minIndex){
                arr[minIndex] = arr[i];
                arr[i] = min;
            }
            //輸出每輪排序后的結(jié)果
            System.out.println("第" + (i+1) + "趟: " + Arrays.toString(arr));
        }
    }
}

運行結(jié)果如下:

到此這篇關(guān)于排序算法圖解之Java選擇排序的文章就介紹到這了,更多相關(guān)Java選擇排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring @Conditional注解講解及示例詳解

    Spring @Conditional注解講解及示例詳解

    這篇文章主要介紹了Spring @Conditional注解講解及示例詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • java foreach循環(huán)為什么不能賦值的講解

    java foreach循環(huán)為什么不能賦值的講解

    這篇文章主要介紹了java foreach循環(huán)為什么不能賦值的講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java解析微信獲取手機號信息的示例步驟

    Java解析微信獲取手機號信息的示例步驟

    在微信中,用戶手機號的獲取通常是通過微信小程序的getPhoneNumber接口來實現(xiàn)的,下面通過一個基于Java的示例,展示了如何接收并解密從微信小程序傳遞過來的加密手機號信息,感興趣的朋友一起看看吧
    2024-06-06
  • reactor-logback的AsyncAppender執(zhí)行流程源碼解讀

    reactor-logback的AsyncAppender執(zhí)行流程源碼解讀

    這篇文章主要為大家介紹了reactor-logback的AsyncAppender執(zhí)行流程源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • spring-cloud入門之eureka-server(服務(wù)發(fā)現(xiàn))

    spring-cloud入門之eureka-server(服務(wù)發(fā)現(xiàn))

    本篇文章主要介紹了spring-cloud入門之eureka-server(服務(wù)發(fā)現(xiàn)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Java利用apache ftp工具實現(xiàn)文件上傳下載和刪除功能

    Java利用apache ftp工具實現(xiàn)文件上傳下載和刪除功能

    這篇文章主要為大家詳細介紹了Java利用apache ftp工具實現(xiàn)文件上傳下載、刪除功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Java使用LinkedHashMap進行分數(shù)排序

    Java使用LinkedHashMap進行分數(shù)排序

    這篇文章主要介紹了Java使用LinkedHashMap進行分數(shù)排序的相關(guān)代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Java?synchronized與死鎖深入探究

    Java?synchronized與死鎖深入探究

    這篇文章主要介紹了Java?synchronized與死鎖,Java中提供了synchronized關(guān)鍵字,將可能引發(fā)安全問題的代碼包裹在synchronized代碼塊中,表示這些代碼需要進行線程同步
    2023-01-01
  • SpringBoot+SpringBatch+Quartz整合定時批量任務(wù)方式

    SpringBoot+SpringBatch+Quartz整合定時批量任務(wù)方式

    這篇文章主要介紹了SpringBoot+SpringBatch+Quartz整合定時批量任務(wù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java中超高頻常見字符操作合集(建議收藏)

    Java中超高頻常見字符操作合集(建議收藏)

    這篇文章主要為大家詳細介紹了Java中超高頻常見字符操作合集,文中的示例代碼講解詳細,對我們學(xué)習(xí)java有一定的幫助,需要的小伙伴可以參考下
    2023-10-10

最新評論