您的位置:首页 > 其它

选择排序--简单选择排序与直接选择排序的区别

2018-02-08 20:45 169 查看
直接选择排序:
思路(按升序):第一轮要在位置0找到最小的元素,所以0要与(0+1)~length-1挨个比;
第二轮要在位置1找到第二小的元素,所以1要与(1+1)~length-1挨个比;
第n轮要在位置n-1找到对应元素,所以n要与(n+1)~length-1挨个比;
位置length-2与位置length-1比较,确定length-2对应的元素length-1自然就确定了,因为已经没有可比较的了。
综上,一共需要比较length-2轮,即外循环0<=n<length-1,也可以说是有length-1个位置需要确定;每轮需要n与n+1~length-1比较,即内循环n+1<=m<length
简单选择排序:
直接选择排序每次遇到n-1>n 的时候就要发生交换;简单选择排序则只是记录下较大那个元素的位置,这样一轮过后这个记录变身本轮所要选取的最大值,而每轮需要确定的位置已由外层循环确定,只需将最大元素位置记录所对应的元素与要确定的位置交换机可。
/**
* 简单选择排序
* @param arr 排序数组
*/
public static void sort(int[] arr) {
int min;
for(int i=0;i<arr.length-1;i++) {
min = i;
for(int j=i+1;j<arr.length;j++) {
if(arr[min]>arr[j]) {
min = j;
}
}
if(min!=i) {
arr[min]=arr[i]+arr[min];
arr[i]=arr[min]-arr[i];
arr[min]=arr[min]-arr[i];
}
}
System.out.println(Arrays.toString(arr));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: