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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 棉/mg花/x糖 于 2013-5-26 17:41 编辑

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

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

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

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

  5. public class BubbleSort {
  6.     static int count = 0;                              //count记录交换趟数
  7.     void bubbleSort(int arr[]) {                       //冒泡排序方法
  8.         int i,j,temp,flag;
  9.         int len = arr.length;
  10.         //一共需比较len-1趟,每趟len-1-i次
  11.         for(i = 0; i < len-1; i++) {
  12.             flag = 0;
  13.             for(j = len-1; j > i; j--) {
  14.                 if(arr[j] < arr[j-1]) {
  15.                     temp = arr[j-1];
  16.                     arr[j-1] = arr[j];
  17.                     arr[j]= temp;
  18.                     flag = 1;
  19.                 }
  20.             }
  21.             if(flag == 1) count++;
  22.             else break;
  23.         }
  24.     }

  25.     public static void main(String[] args) throws IOException {
  26.         // TODO Auto-generated method stub
  27.         BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in));
  28.         String ch;
  29.         int arr[] = new int[8];
  30.         int len = arr.length;
  31.         System.out.println("请从键盘输入8个整数,一行只输入一个数:");
  32.         for(int i = 0; i < len; i++) {
  33.             ch = keyin.readLine();                     //用于读取一个字符串
  34.             arr[i] = Integer.parseInt(ch);             //将字符串类型ch转换成整数类型
  35.         }

  36.         //打印原始数据
  37.         System.out.println("原始数据:");
  38.         for(int i = 0; i < len; i++) {
  39.             System.out.print(" "+arr[i]);
  40.         }
  41.         System.out.println("\n");
  42.   
  43.         BubbleSort p = new BubbleSort();
  44.         p.bubbleSort(arr);                             //实参维数组名
  45.         System.out.println("冒泡排序法的结果:");
  46.   
  47.         //打印排序结果
  48.         for(int i = 0; i < len; i++) {
  49.             System.out.print(" "+arr[i]);
  50.         }
  51.         System.out.println("\n");
  52.         System.out.println("排序趟数:"+count);
  53.     }
  54. }
复制代码
运行结果:

0 个回复

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