以下均为个人观点和理解,有错误的话请及时告知我哦!
逻辑:首先我们需要定义一个方法来时间排序的功能, 同时我们需要修饰一下我们的结果,让使用者见名知意所以给输出方面我们也定义一个
选择排序=由小到大=拿0角标的数值去和其他角标挨个去比较,只要比0角标值小的就替换掉,最后最小的会在左边。 举例一个: 12654 选择排序就是 会让1和2654挨个比较,最后输出12654。
- <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 //输出效果;
- <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>
复制代码
- <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 ,减少的是最小数角标, 还是说代表的意义是最大值 。 -------------- 我觉得是长度减掉小的角标后的意思
明日送上另一种的选择排序的效率方法和思想
|
|