排序算法------选择排序法

为了方便大家理解,我尽量写的浅显易懂,同时希望大家把不理解的发到评论中,我会尽所能,帮助你l理解。

欢迎qq进行交流问题:

      本人QQ :1770115451             算法交流群: 1061907071

选择排序算法:

  总体思路:    

    对数组进行遍历,找出一个最大的元素,并将该元素,放到最后的位置去,(同时,由于本次最大的元素位置已经确定好了,因此下一次的最大元素的位置,一定在前一个位置)我们可以把数组想象成一个天花板的结构,每确定出一个最大元素,放到天花板的位置,同时天花板的位置减一)当天花板的高度为0时,排序结束。

 

  算法实现步骤:

       1.创建一个循环,从最后的位置,到0。(天花板从高到低的循环)

       2.声明一个最大元素的变量(记录他的下标和值)

         3.创建一个在天花板的范围内的循环,不断更新最大元素的值和下标

       4.将一轮循环得出的最大值,与天花板的位置进行交换。

  关键代码:

  

 1     //选择排序法
 2     public static void  chooseSort (int arr[]){
 3         //1.天花板的高度从高到低逐次递减
 4         for(int celing = arr.length-1;celing>=0;celing--){
 5             //2.先将第一个元素作为最大的元素
 6             int maxIndex = 0;//最大元素的下标
 7             int  max    = arr[0];//最大元素的值
 8             
 9             //3.对天花板下面的每一个元素进行遍历,寻找最大的一个元素,并更新
10             for(int i=0;i<=celing;i++){
11                 int N = arr[i]; //获取当前元素
12                 //更新最大的元素
13                 if(N>max){
14                     maxIndex = i; //更新最大元素下标
15                     max=arr[i];      //更新最大元素的值
16                 }                
17             }
18             //4.找到最大的元素后,与天花板的位置进行交换
19             swap(arr, maxIndex, celing);
20         }
21         printarr(arr);
22     }

  

//交换数组元素方法
    public static void swap (int arr[],int i ,int j){
        int temp = arr[i];
        arr[i]  = arr[j];
        arr[j] =  temp;
    }
    

 最后希望看到这篇随笔的朋友们:

   希望你们在学习算法的道路不迷茫,一定要坚持下来,加油! ^ . ^

     

原文地址:https://www.cnblogs.com/songchengyu/p/12912682.html