黑马程序员技术交流社区

标题: 冒泡排序 [打印本页]

作者: 天师道长    时间: 2016-5-19 16:54
标题: 冒泡排序
怎样使用冒泡排序,它的代码怎样写
作者: 我是你岁哥❤环    时间: 2016-5-19 19:27
  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. }
复制代码


作者: TCK8888    时间: 2016-5-19 20:27
将楼上的那位哥们代码,换个写法

  1. /**
  2. * 冒泡排序
  3. *
  4. * @author Administrator
  5. *
  6. */
  7. public class BubbleSort {

  8.         public static void main(String[] args) {
  9.                 int[] intArray = { 45, 36, 55, 77, 66, 12, 26 };

  10.                 System.out.println("排序前的数组元素:");
  11.                 printArray(intArray);

  12.                 // 对数组进行冒泡排序
  13.                 bubbleSort(intArray);

  14.                 System.out.println("\n排序后的数组元素:");
  15.                 printArray(intArray);
  16.         }

  17.         /*
  18.          * 冒泡排序
  19.          */
  20.         public static void bubbleSort(int[] intArray) {
  21.                 for (int i = 0; i < intArray.length; i++) {
  22.                         for (int j = 0; j < intArray.length - i - 1; j++) {
  23.                                 if (intArray[j] > intArray[j + 1]) {
  24.                                         swap(intArray, j, j + 1);
  25.                                 }
  26.                         }
  27.                 }
  28.         }

  29.         /*
  30.          * 交换元素
  31.          */
  32.         public static void swap(int[] intArray, int i, int j) {
  33.                 intArray[i] = intArray[i] ^ intArray[j];
  34.                 intArray[j] = intArray[j] ^ intArray[i];
  35.                 intArray[i] = intArray[i] ^ intArray[j];
  36.         }

  37.         /*
  38.          * 遍历数组元素
  39.          */
  40.         public static void printArray(int[] intArray) {
  41.                 for (int a : intArray) {
  42.                         System.out.print(a + "\t");
  43.                 }
  44.         }

  45. }
复制代码

作者: Belive丶Me    时间: 2016-5-19 21:20
楼上正解
作者: Noodles.    时间: 2016-5-19 22:05
看起来好复杂啊!
作者: yikwing    时间: 2016-5-19 22:07
善用搜索,这个问题都回复好几遍了
作者: sunchuan    时间: 2016-5-19 22:08
顶贴是一种美德
作者: 再见卡卡罗特    时间: 2016-5-19 22:21
看一看。。。。。。。。。。。
作者: 我是你岁哥❤环    时间: 2016-5-19 22:38
TCK8888 发表于 2016-5-19 20:27
将楼上的那位哥们代码,换个写法

使用位运算进行元素交换
作者: 宁静||致远    时间: 2016-5-19 22:58
学习了,受教
作者: 宁静||致远    时间: 2016-5-19 22:59
学习了,受教
作者: liukai3385    时间: 2016-5-19 23:02

作者: su3356859    时间: 2016-5-19 23:02
一楼正解.........




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