黑马程序员技术交流社区

标题: 数据结构:用数组实现选择排序算法(已优化) [打印本页]

作者: 棉/mg花/x糖    时间: 2013-5-25 17:37
标题: 数据结构:用数组实现选择排序算法(已优化)
本帖最后由 棉/mg花/x糖 于 2013-5-27 18:33 编辑

数据结构:用数组实现选择排序算法(已优化)

注意:算法优化不是很理想,希望哪位大神能继续帮着优化!!谢谢^_^

程序源码如下:
  1. package com.yb.ArrayAndString;

  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;

  5. public class SelectSort {
  6.     static int count = 0;
  7.     static void selectSort(int arr[]) {                             //选择排序方法
  8.         int k,temp,flag = 0;
  9.         int len = arr.length;
  10.         for(int i = 0; i < len-1; i++) {
  11.             flag = 0;
  12.             k = i;
  13.             for(int j = i+1; j < len; j++) {
  14.                 if(arr[j] < arr[k]) {
  15.                     k = j;
  16.                 }
  17.             }
  18.             if(k > i) {
  19.                 temp = arr[i];
  20.                 arr[i] = arr[k];
  21.                 arr[k]= temp;
  22.                 flag = 1;
  23.             }
  24.             if(flag == 1) count++;
  25.         }
  26.     }
  27.     public static void main(String[] args) throws IOException {
  28.         // TODO Auto-generated method stub        
  29.         BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in));
  30.         String ch;
  31.         int arr[] = new int[8];
  32.         int len = arr.length;
  33.         System.out.println("请从键盘输入8个整数,一行只输入一个数:");
  34.         for(int i = 0; i < len; i++) {
  35.             ch = keyin.readLine();                                   //用于读取一个字符串
  36.             arr[i] = Integer.parseInt(ch);                           //将字符串类型ch转换成整数类型
  37.         }
  38.   
  39.         //打印原始数据
  40.         System.out.println("原始数据:");
  41.         for(int i = 0; i < len; i++) {
  42.             System.out.print(" "+arr[i]);
  43.         }
  44.         System.out.println("\n");

  45.         //int len = arr.length;
  46.         SelectSort.selectSort(arr);                                  //数组名作为成员方法的实参
  47.         System.out.print("选择法排序的结果:");
  48.         System.out.println("length = "+arr.length);
  49.         for(int i = 0; i < len; i++) {
  50.             System.out.print(" "+arr[i]);                            //数组arr的值已在方法调用中改变了
  51.         }
  52.         System.out.println("\n");
  53.         System.out.println("排序趟数:"+count);
  54.     }
  55. }
复制代码
运行结果:






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