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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HeiMaZ 中级黑马   /  2016-5-19 22:26  /  391 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.heima.debug;

public class BubbleSort {

       
        public static void main(String[] args) {
                int[] arr = {24, -69, 80, 57, -13};
                int index=0;                                                                        //索引,记录较小值(较大)
                int temp;                                                                                //中间变量
                for (int i = 0; i < arr.length-1; i++) {                //比较次数为arr.length-1
                        temp = arr[i];                                                               
                        for (int j = i+1; j < arr.length; j++) {        //相邻两数比较
                                if (temp>arr[j]) {                                               
                                        temp=arr[j];                                                //如果temp>arr[j],记录小的arr[j]                       
                                        index=j;                                                        //记录更小的索引
                                }
                        }
                        swap(arr,index,i);                                                        //外循环结束一次,就把最小的temp跟arr[i]交换
                }
                print(arr);
        }
        public static void swap(int[]arr,int a,int b){                //交换
                int temp=arr[b];
                        arr[b]=arr[a];
                        arr[a]=temp;
        }
        public static void print(int[]arr){                                        //输出新的数组
                for (int i = 0; i < arr.length; i++) {
                        System.out.print(arr[i]+"        ");
                }
        }

}

1 个回复

倒序浏览
  1. class BubbleSort
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 System.out.println("********冒泡排序!********");

  6.                 //定义一个整数类型的数组,长度为10
  7.                 int arr[] = {12,3,45,23,56,7,56,11,20,30};
  8.                
  9.                 //排序之前的数组
  10.                 System.out.println("数组排序之前:");
  11.                 printArray(arr);
  12.                
  13.                 //调用排序的方法对数组进行排序
  14.                 bubbleSort(arr);

  15.                 //打印输出数组中的整数
  16.                 System.out.println("数组排序之后:");
  17.                 printArray(arr);
  18.         }

  19.         public static void bubbleSort(int arr[]){

  20.                 /*冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。
  21.                 * 即首先比较第1个和第2个数,将小数放前,大数放后。
  22.                 * 然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。
  23.                 * 重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再大于第2个数),
  24.                 * 将小数放前,大数放后,一直比较到最小数前的一对相邻数,将小数放前,大数放后,第二趟结束,
  25.                 * 在倒数第二个数中得到一个新的最小数。如此下去,直至最终完成排序。
  26.                 */
  27.                 for(int i=0; i<arr.length; i++){
  28.                         for(int j=0; j<arr.length-i-1; j++){
  29.                                 if(arr[j]>arr[j+1]){
  30.                                         swap(arr, j, j+1);
  31.                                 }
  32.                         }
  33.                 }
  34.         }

  35.         /*此方法用于相互交换数组中的两个数
  36.         * 定义一个临时变量temp用于存储其中一个数
  37.         */
  38.         public static void swap(int arr[], int a, int b){
  39.                 int temp = arr[a];
  40.                 arr[a] = arr[b];
  41.                 arr[b] = temp;
  42.         }

  43.         //循环出数组中的每一个元素
  44.         public static void printArray(int arr[]){
  45.                 for(int i=0; i<arr.length; i++){
  46.                         System.out.print(arr[i] + "\t");
  47.                 }
  48.         }

  49. }
复制代码


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马