选择排序

来源:互联网 发布:沧海一声笑 知乎 编辑:程序博客网 时间:2024/06/05 07:42
//选择排序 实现
public static void selectSort(int[]arr) {

for(int i=0;i<arr.length-1;i++){ //表示趟数,一共arr.length-1次。
int minIndex=i;
for(int j=i+1;j<arr.length;j++){
if(arr[j]<arr[minIndex]){
minIndex=j;
}
}
if(minIndex!=i){
int temp=arr[i];
arr[i]=arr[minIndex];
arr[minIndex]=temp;
}
}

}

整体思想:一串数组,把第一个固定好,然后从剩下的数中找到最小数和第一个(如果比第一个小)交换,这样依次,遍历整个数组。

1.根据传入的int[]数组,先写一个循环,代表这个选择排序需要经历的遍数。

2.定义一个变量记录这些剩下的数据中最小数的下标,后面使用arr[]获取最小值要用到。这个变量默认最小值得下标就是i的下标,从i+1开始比较的

3,里面的循环,是从i后面一个数开始,到整个数组末尾。所以是:j=i+1;j<arr.length;j++

4.3这一步循环的时候,判断如果后面有数据比最小小标的数小,那么改变最小下标为当前数的下标

5.第4步遍历一遍,就得到了最小值,接下来就判断一下,如果这个最小值的下标不等于i,就交换一下。

if(minIndex!=i)思考一下这个判断什么时候成立,看前面就是开始定义这个下标的时候,后面一直就没有改变这个下标的时候。

这个逻辑也就是说后面没有比arr[minindex]下标小的数了,所以不用交换。

这个交换都是使用一个中间变量存储一下数值。任何排序中交换都是使用这个的。

                                int temp=arr[i];
arr[i]=arr[minIndex];
arr[minIndex]=temp;



整个流程就是这样了,其实觉得不是很聪明的时候,就需要有耐心,不要急于求成.

我们慢慢来,记忆不好就多抄。

花10天过10个难题,不如花10天解决一个难题。

最近找工作,面试,笔试。感觉自己编程水平太差了,没有办法啊。那么总结一些知识点,之前我是不写博客的。希望总结一下能记住牢靠一点。

原创粉丝点击