选择排序法
选择排序(Select Sort)算法的基本思想是:在待排序的无序数组中找出最小数(或最大数)并将它与序列中的第一个记录交换位置;然后从不包括第一个位置上的记录序列中再次选择最小数(或最大数)并将它与序列中的第二个记录交换位置;如此重复,直到序列中只剩下一个数为止。
假定有n个数的序列,要求按递增的次序排序,则实现步骤为:
第一步:从n个数中找到最小数的下标,将最小数与第一个数交换位置,通过这一趟排序,第一个数位置就确定好了。
第二步:除去已经排序好的数外,在剩下的n-1个元素中再按步骤一的方法选出第二小的数,与未排序数中的第一个数交换位置。
第三步:重复步骤二,最后构成递增数列。
下面举个例题:给定你一个无序数组a[10],将其按递增排序。
package com.itttop.sort;
public class SelectSort {
public static void main(String[] args) {
int R[] = { 22, 15, 7, 35, 89, 13, 6, 12, 3, 9 };
int i, j, temp, index, min;// index用于记录最小值的下标。
// 下面为输出原来数列,用于比较。
System.out.println("未排序前原数列为:\n");
for (i = 0; i < R.length; i++)
System.out.print("\t" + R[i]);
// 下面为数列排序过程。
for (i = 0; i < R.length-1; i++)
{
min = R[i];
index = i;
for (j = i + 1; j < R.length; j++)
{
if (min > R[j])
{
min = R[j];
index = j;
}
}
temp = R[i];
R[i] = R[index];
R[index] = temp;
}
System.out.println("\n"+"排序好的递增数列为:\n");
for (int k = 0; k < R.length; k++)
System.out.print("\t" + R[k]);
}
}
测试效果如下:
未排序前原数列为:
22 15 7 35 89 13 6 12 3 9
排序好的递增数列为:
3 6 7 9 12 13 15 22 35 89