选择排序--简单选择排序与直接选择排序的区别
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));
}
思路(按升序):第一轮要在位置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));
}
相关文章推荐
- 冒泡排序和直接选择排序的区别(转自网络)
- 六种排序方法的学习(直接插入、希尔、冒泡、快速、选择、归并)
- 直接选择排序 知识点小结
- 第十六周项目1-验证算法(5)直接选择排序
- 数据结构算法之排序系列Java、C源码实现(3)--直接选择排序
- 排序七部曲之(一)直接选择排序
- Coco学编程(二)--直接选择排序
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- java版排序算法简介及冒泡排序以及优化,选择排序,直接插入排序,希尔排序,堆排序,快速排序及其优化前言 2 分类 2 稳定性 3 时间复杂度 4 Java实现版本 5 1、冒泡排序 6 2、选择排序
- c++实现数据结构中的各种排序方法:直接插入、选择,归并、冒泡、快速、堆排序、shell排序
- 【选择排序】简单选择排序
- 冒泡排序与选择排序区别
- 数据结构与算法——冒泡排序,选择排序,直接插入排序
- 第16周项目1 验证算法(5)直接选择排序
- java 数组 直接选择排序
- 冒泡排序、选择排序的区别
- Java学习-选择排序1-直接选择排序
- 直接选择排序
- 直接选择排序
- java数组——直接选择排序