A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


以下均为个人观点和理解,有错误的话请及时告知我哦!
逻辑:首先我们需要定义一个方法来时间排序的功能, 同时我们需要修饰一下我们的结果,让使用者见名知意所以给输出方面我们也定义一个

选择排序=由小到大=拿0角标的数值去和其他角标挨个去比较,只要比0角标值小的就替换掉,最后最小的会在左边。  举例一个: 12654    选择排序就是 会让1和2654挨个比较,最后输出12654。

  1. <div><span style="line-height: 2.2em;">class ArrayDemo</span></div><div><span style="line-height: 2.2em;">  {</span></div><div>public static void main(String[]args)   </div><div>      {</div><div>    int[]arr={15,12,3,4,9,18}                   //   数组</div><div>   Syetem.out.print("数组排序前:");</div><div>      printAry(arr);                  //调用下面定义的输出格式</div><div>     selectSort(arr);                   //调用下面定义的排序方法</div><div>    <span style="line-height: 2.2em;">Syetem.out.print("数组排序后:");</span></div><div><span style="line-height: 2.2em;">      </span><span style="line-height: 2.2em;"> </span><span style="line-height: 2.2em;">printAry(arr)</span><span style="line-height: 2.2em;">;                </span><span style="line-height: 2.2em;"> </span><span style="line-height: 2.2em;">//调用下面定义的</span><span style="line-height: 2.2em;">输出格式</span></div><div><span style="line-height: 2.2em;">   }</span></div><div></div>
复制代码





    下面我们来定义上面使用到的  selectSort//选择排序;printAry //输出效果;

  1. <div><span style="line-height: 2.2em;"> public static void  selecSort(int[]arr)              //定义排序方法,   取得是int 类型</span></div><div><span style="line-height: 2.2em;">    {</span></div><div><span style="line-height: 2.2em;">          for(x=o;x<arr.length-1;x++)                      //arr.length-1现在我认为的俩个意思,目前没确定; 1.最大值的意思。 2.因每次比较之后较小角标因是最小,不必参与循环 </span></div><div><span style="line-height: 2.2em;">               {     </span></div><div><span style="line-height: 2.2em;">for(y=x+1;y<arr.lent;y++)                   //x+1的意思在于,因为x角标每次需要和比的都是后面的角标故+1,总不能让他原地一直跳哦</span></div><div><span style="line-height: 2.2em;">                      {</span></div><div><span style="line-height: 2.2em;">              if (arr[x]>arr[y])            //条件式,是为了下面的换位,   只要满足条件(如2>1)那么之后会把1 调到前面</span></div><div><span style="line-height: 2.2em;">                              { </span></div><div><span style="line-height: 2.2em;">            int temp = arr[x];               //定义个变用来代表没变为前的</span><span style="line-height: 2.2em;">z=</span><span style="line-height: 2.2em;">2</span></div><div><span style="line-height: 2.2em;">            arr[x]=arr[y];                       //如果 x=y   ;  2=1;</span></div><div><span style="line-height: 2.2em;">            </span><span style="line-height: 2.2em;">temp</span><span style="line-height: 2.2em;"> = arr[x];                     //那么z=1                             就是换位,把小的换前面去</span></div><div><span style="line-height: 2.2em;">                     }</span></div><div><span style="line-height: 2.2em;">               }</span></div><div><span style="line-height: 2.2em;">     }</span></div>
复制代码


  1. <div><span style="line-height: 2.2em;">public static void printAry(String[]args)         //定义输出的方法</span></div><div><span style="line-height: 2.2em;">   {</span></div><div><span style="line-height: 2.2em;">       System.out.print("[");                 //因为最后输出的是【..............】  所以先输出 【</span></div><div><span style="line-height: 2.2em;">     for(x=0;x<arr.length;x++)           //遍历</span></div><div><span style="line-height: 2.2em;">         { </span></div><div><span style="line-height: 2.2em;">                if(x != arr.leng-1)                   //条件定义   ,-1的意义在于只要不是之前比较过后的小的角标就输出一下内容</span></div><div><span style="line-height: 2.2em;">        </span><span style="line-height: 2.2em;"> System.out.print(arr[x]+",");             //  ,号的分割</span></div><div><span style="line-height: 2.2em;">   elas         //这玩意的意义在于 第二次输出</span><span style="line-height: 2.2em;"> </span><span style="line-height: 2.2em;">printAry之后 执行的是下面的 】  所以上面才会出现俩次,而且输出的东西不一致</span></div><div><span style="line-height: 2.2em;">        </span><span style="line-height: 2.2em;">System.out.print(arr[x]+"]");                //  】的完结</span></div><div>                     }</div><div>           }</div><div>}</div>
复制代码
    这是效率较低的一种排序,但是用来理解是不错的。 同时 没有返回操作是因为本身引用的就是数组里的,所以没有必要

    疑问点:arr.length-1的意思?
    是说的长度减1 ,减少的是最小数角标,  还是说代表的意义是最大值    。      -------------- 我觉得是长度减掉小的角标后的意思
   明日送上另一种的选择排序的效率方法和思想

1 个回复

正序浏览
我想说怎么代码表示出来,这么难看。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马