zoukankan      html  css  js  c++  java
  • 排序算法------选择排序法

    为了方便大家理解,我尽量写的浅显易懂,同时希望大家把不理解的发到评论中,我会尽所能,帮助你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;
        }
        

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

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

         

  • 相关阅读:
    Kafka项目实战-用户日志上报实时统计之应用概述
    ElasticSearch实战-编码实践
    ElasticSearch实战-入门
    Django如何渲染markdown
    理解相似矩阵
    从向量空间的角度来理解方程组有无解的问题
    凸优化学习笔记(1)-基础概念
    Django如何与JQuery进行数据通信?
    JQuery学习笔记之属性与样式
    JQuery学习笔记之选择器
  • 原文地址:https://www.cnblogs.com/songchengyu/p/12912682.html
Copyright © 2011-2022 走看看