A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵桂勇 中级黑马   /  2015-5-6 23:35  /  329 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


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


评分

参与人数 1黑马币 +6 收起 理由
怪学究 + 6 很给力!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马