以前听的都是一般的选择排序,这个是选择排序的优化版。
import java.util.Scanner;
/**对字符串中字符进行自然排序。
* 思路:
A:把字符串转换成字符数组。
B:对字符数组进行排序。
C:把排序后的字符数组转换成字符串。*/
public class PaiXu {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串");
/**录入一个字符串*/
String s = sc.nextLine();
/**将一个字符串转字符数组*/
char[] c = s.toCharArray();
/**将字符数组排序,用选择排序*/
selectionSort(c);
/**将字符数组转成字符串*/
System.out.println(String.valueOf(c));
}
/**
* 这个是选择排序的优化版,一次循环只交换一次数据。
* @param a
*/
public static void selectionSort(char[] a){
for (int a1= 0; a1 < a.length - 1; a1++) {
for (int i = a1 + 1,sma = a1; i < a.length; i++) {
/**判断一次循环中那个元素是最小的,然后找回最小元素的脚标*/
if (a[sma] > a[i]) { //注意此处比较的是找字符串中的最小值,需要比较的值是一个变化的
sma = i;
}
char lin;
if(a[a1] != a[sma] ){
lin = a[a1];
a[a1] = a[sma];
a[sma] = lin;
}
}
}
}
}
|