选择排序

来源:互联网 发布:深圳网络在线教育平台 编辑:程序博客网 时间:2024/05/23 11:11


选择排序(Selection sort)是一种简单直观的排序算法。

基本思路:

    选择排序法的第一层循环从起始元素开始选到倒数第二个元素,主要是在每次进入第二层循环之前,先将外层循环的下标赋值给临时变量,接下来进入第二层循环中,如果发现有比这个位置元素更小(或者大)的元素,则将那个更小(或者更大)的元素的下标赋值给临时变量,最后,在退出里层循环后,判断临时变量是否改变,如果临时变量改变啦,则说明,有比当前外层循环位置更小(或者更大)的元素,将这两个位置的元素交换即可。

算法代码如下:

for(int i=0; i<a.length-1; i++){minIndex = i;//无序区的最小数据数组下标for(int j=i+1; j<a.length; j++){//在无序区中找到最小数据并保存其数组下标if(a[j] < a[minIndex])       //对于不同的具体问题,我们只需要改变这里的比较条件即可。{                            //现在是直接比较数组元素自身(这种情况是最简单的)minIndex = j;}}if(minIndex != i){//如果不是无序区的最小值位置不是默认的第一个数据,则交换之。temp = a[i];a[i] = a[minIndex];a[minIndex] = temp;}}

下面是一个具体的例子:

public class SelectSort {public static void main(String[] args) {int[] arr = {55,21,-5,0,86,23,9,-100};selectSort(arr);System.out.println("选择排序后:");for(int i=0; i<arr.length; i++){if(i != arr.length-1)System.out.print(arr[i] + ",");elseSystem.out.print(arr[i]);}}//选择排序public static void selectSort(int[] a){int minIndex = 0;int temp = 0;if((a==null)||(a.length==0))return;for(int i=0; i<a.length-1; i++){minIndex = i;//无序区的最小数据数组下标for(int j=i+1; j<a.length; j++){//在无序区中找到最小数据并保存其数组下标if(a[j] < a[minIndex])       //对于不同的具体问题,我们只需要改变这里的比较条件即可。{                            //现在是直接比较数组元素自身(这种情况是最简单的)minIndex = j;}}if(minIndex != i){//如果不是无序区的最小值位置不是默认的第一个数据,则交换之。temp = a[i];a[i] = a[minIndex];a[minIndex] = temp;}}}}/*程序输出如下:选择排序后:-100,-5,0,9,21,23,55,86*/







0 0
原创粉丝点击