黑马程序员技术交流社区

标题: 选择排序优化版。 [打印本页]

作者: 赵桂勇    时间: 2015-5-6 23:35
标题: 选择排序优化版。

以前听的都是一般的选择排序,这个是选择排序的优化版。
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;
                                }       
                        }
                       
                }
        }
}







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2