原理:
每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕。
简单选择排序的基本思想:
给定数组:int[] arr={里面n个数据};第1趟排序,在待排序数据arr[1]~arr[n]中选出最小的数据,将它与arrr[1]交换;第2趟,在待排序数据arr[2]~arr[n]中选出最小的数据,将它与arr[2]交换;以此类推,第i趟在待排序数据arr[i]~arr[n]中选出最小的数据,将它与arr[i]交换,直到全部排序完成。
举例:
arr={9,8,7,6,5,4,3,2,1}
第一趟排序:1,8,7,6,5,4,3,2,9
第二趟排序:1,2,7,6,5,4,3,8,9
第三趟排序:1,2,3,6,5,4,7,8,9
第四趟排序:1,2,3,4,5,6,7,8,9
第五趟排序:1,2,3,4,5,6,7,8,9
第六趟排序:1,2,3,4,5,6,7,8,9
第七趟排序:1,2,3,4,5,6,7,8,9
第八趟排序:1,2,3,4,5,6,7,8,9
代码:
package SortType2;
import java.util.Arrays;
//选择排序
// 概念:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕。
public class selectSort {
public static void main(String[] args)
{
int[] arr={5,3,1,9,8,2,4,7};
select(arr);
System.out.println(Arrays.toString(arr));
}
public static void select(int[] arr)
{
for (int i=0;i<arr.length-1;i++)
{
int first=arr[i];
int j=0;
int k=0;
int min=0;
min=arr[i+1];
for(j=i+1;j<arr.length;j++)
{
if(arr[j]<=min)
{
k=j;
min=arr[k];
}
}
if(arr[i]>arr[k])
{
arr[i]=arr[k];
arr[k]=first;
}
}
}
}