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;
        }
        

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

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

         

  • 相关阅读:
    Socket 之 同步以及异步通信
    Socket 之 c#实现Socket网络编程
    Socket 之 API函数介绍
    Socket 之 原理与编程基础
    C# 之 user32函数库
    WinServer 之 访问同网段服务器 或 同一服务器多虚拟机间的访问
    annex-b格式
    FLV文件格式解析
    PHP5中的stdClass
    web服务器【apache/nginx] 关闭目录的浏览权限
  • 原文地址:https://www.cnblogs.com/songchengyu/p/12912682.html
Copyright © 2011-2022 走看看