选择排序-java实现

来源:互联网 发布:绿盟网络审计系统 编辑:程序博客网 时间:2024/06/06 16:47

选择排序:

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

排序策略:

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();}}




1 0
原创粉丝点击