java实现选择排序算法

来源:互联网 发布:千牛mac电脑版 编辑:程序博客网 时间:2024/05/24 05:46

1.选择排序的思想

主要思想就是不断地从数组中找到最小或最大的元素,然后开始和排序的位置对应的元素交换即可,直到全部都已经落位。简述:首先找到数组中最小的那个元素,然后将它和数组的第一个元素交换位置(如果这个元素其实就是自己本身的话,那么就和自己本身进行交换)。然后在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此进行下去,直到将整个数组都排序,就是选择排序的过程了。

2.选择排序的特点

<1>运行时间和输入无关

<2>数据移动是最少的:每次只是交换数组中的两个值,所以交换次数和数组的大小是线性关系。

3.选择排序的实现

由于需要遍历数组进而挑选出需要交换的最小元素,所以肯定需要循环。由于第一次选择了一个最小的元素放在第一个位置,那么第二个位置放第二小的元素,而此时的循环遍历只需遍历剩下的arr.length-1个元素了。以此类推可得到其实一次交换会进行N-i-1次比较。总共N次交换,那么(N-1)+(N-2)+..........+2+1 =N(N-1)/2  ~N^2/2次比较。而内部则是简单的交换。

public class SelectiveSort {public static void sort(double[] arr){for(int i=0;i<arr.length;i++){int min=i;for(int j=i+1;j<arr.length;j++){if(arr[j]<arr[min]){min=j;}}if(arr[i]>arr[min]){double temp=arr[min];arr[min]=arr[i];arr[i]=temp;}}}public static void main(String[] args) {double[] arr={1,2,3,4,656,67,67,7,5,43};sort(arr);for(int i=0;i<arr.length;i++){System.out.print(arr[i]+" ");}}}
结果:


解释:从上述程序及思想可以看出,选择排序就是遍历通过比较找到最小元素的位置进行记录,再将最小元素与对应位置的元素进行交换。




0 0