您的位置:首页 > 编程语言 > Java开发

选择排序-java实现

2016-07-10 16:17 399 查看

选择排序:

反复地将某一个特定的值放到它在列表中最终已经排好序的位置,从而完成对某一个值的排序。

排序策略:

1:扫描整个列表找到最小值,将该值与列表的第一个值交换;

2:扫描除第一个值以外的列表,找到最小值与列表第二个值交换

3:依次找到除已排序子集以外的值中的最小值,与排序子集的后一位交换;

4:重复第三步,直到整个列表排序完成。

例子:

初始:2  8  5  1  3

step1:1  8  5  2  3  (选择最小的值1与第0位交换)

step2:1  2  5  8  3  (选择最小值2的与第1位交换)

step3:1  2  3  8  5  (选择最小值3的与第2位交换)

step4:1  2  3  5  8  (选择最小值5的与第3位交换)

step5:1  2  3  5  8  (选择最小值8的与第4位交换)

最终:1  2  3  5  8 

Code:

/*
*Created on 2016年7月10日
*Copyright 2016 Yong Cai Limited crop. All Rights Reserved
*
*/

package org.cy.sort;

public class SelectionSort {

public static void main(String[] args) {
String[] str = {"cc", "yy", "aa", "yong", "nba", "love"};
printArr(selectionSort(str));
}

public static <T extends Comparable<? super T>> T[] selectionSort(T[] data){
int min;
T tmp;
int len = data.length;
for(int index = 0;index < len; index++){
min = index;
for(int scan = index + 1; scan < len; scan++){
if(data[scan].compareTo(data[min]) < 0){
min = scan;
}
}
tmp = data[min];
data[min] = data[index];
data[index] = tmp;
}
return data;
}

public static <T> void printArr(T[] data){
int len = data.length;
for(int i = 0; i < len; i++){
System.out.print(data[i] + " ");
}
System.out.println();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息