美文网首页
冒泡排序

冒泡排序

作者: 腹黑小叶子orz | 来源:发表于2017-07-28 22:02 被阅读0次

冒泡排序是一种基本的排序方法。通俗来说就是:从后往前一个一个进行对比,符合条件的前进,不符合的就放在最后一个被对比的位子上。

如:12,45,10,6,9,5,34这把个数用冒泡排序进行从小到达排列

首先用12 : 45,  45 >12   ;位置不变。12,45,10,6,9,5,34

45 : 10,   45 > 10,将45与10换位置 12,10,45,6,9,5,34

45 : 6,   45 > 6 ,将45与6换位置 12,10,6,45,9,5,34

45  :  9,       45 >9,将45与9换位置 12,10,6,9,45,5,34

45 : 5,      45 > 5,将45与5换位置 12,10,6,9,5,45,34

45 : 34,  45 > 34,将45与5换位置 12,10,6,9,5,34,45

排序过程:12,45,10,6,9,5,34

(1) 12  10  6  9  5  34             45       比较6次

(2)  10  6   9  5  12          34   45       比较5次

(3)   6   9   5   10       12  34   45       比较4次

(4)   6   5   9         10  12  34  45       比较3次

(5)   5  6          9  10  12  34  45        比较2次

(6)   5         6   9  10  12  34  45        比较1次

最终得出了5  6  9  10  34  45,一共比较了6次,比较6次是外层for循环的次数,用元素个数减1来表示。每次比较的数都是元素个数减1,再减去正确定的元素的下标。第一次为了对比下标为0的元素,所以是(元素个数)7 - 1 - i(从0开始,每次加1),这是for嵌套循环的内层循环。

计算机利用冒泡排序进行排列:

class MySort {


 public static void main(String[] args) {
  
  int[] arr = new int[10];//定义数组
  
  boolean ret = getNumFromStdin(arr);//利用布尔值接收函数传的值
  if (ret) {
   bubbleSort(arr);

public static boolean bubbleSort(int [ ] arr){//打印结果

//参数合法性判断

if (arr == null  || arr.length == 0){

System.out.println("输入参数不合法");

return false;

}

for (int i = 0; i < arr.length-1; i ++){//外层空值循环次数,7个数字,循环6次,所以是length - 1次

for (int j = 0; j < arr.length - i - 1; j ++){//内层循环控制内容,每次比较,第一个数需要和后面6个数进行比较,第二个与后面5个数比较,一次发现规律,比较时,元素的下标加1为元素个数,所以用元素个数 - 1表示循环比较的次数。,若理解不了,记住格式。

if (arr[j] > arr[j + 1]){//如果钱面的数字大于后面的数字,两数交换位置。

int temp = arr[i];

arr[j] = arr[ j + 1];

arr[j + 1] = temp;//这里是主函数区,交换两个元素的位置

 }//if

}//for j

}//for i

return true;//返回

}

/**
  功能:从键盘上获取十个int类型的数据放入数组
  参数: int[] array  表示要传入的数组【首地址】
  返回值: boolean 返回true 表示函数运行成功,返回false表示函数运行失败
   1、传入的数组首地址是null
   2、传入的数组长度为0
 */
 public static boolean getNumFromStdin(int[] array) {
  //参数合法性判断
  if (array == null || array.length == 0) {
   System.out.println("Input Param is invalid!");
   return false; //表示函数运行失败
  }
  
  Scanner sc = new Scanner(System.in);
  System.out.println("请输入" + array.length + "个数:");
  
  for (int i = 0; i < array.length; i++) {
   array[i] = sc.nextInt();
  }
  
  return true;
 }
 

冒泡排序引导图

相关文章

网友评论

      本文标题:冒泡排序

      本文链接:https://www.haomeiwen.com/subject/abnflxtx.html