排序算法(一)----冒泡排序

冒泡排序的实现

来自百度百科:

冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。

冒泡算法描述:

1.i从0开始,i与i+1比较,如果i>i+1,那么就互换

2.i不断增加,直到i<n-1(n是数组元素的个数,n-1是数组已经最后一个元素) ,一趟下来,可以让数组元素中最大值排在数组的最后面

      //临时变量

       int temp;

       //记录是否发生了置换, 0 表示没有发生置换、 1 表示发生了置换

       int Change;

       //外层循环是排序的趟数(n-1)

       for (int i = 0; i < arrays.length - 1; i++) {

           //每比较一趟就重新初始化为0

           isChange = 0;

           //内层循环是当前趟数需要比较的次数(n-1-i)

           for (int j = 0; j < arrays.length - i - 1; j++) {

               //如果前一位比后一位要大,那么交换

               if (arrays[j] > arrays[j + 1]) {

                   temp = arrays[j];

                   arrays[j] = arrays[j + 1];

                   arrays[j + 1] = temp;

                   //如果跑到这,说明发生置换了

                   isChange = 1;

               }

           }

           //如果跑一趟没有发生置换,说明顺序已经没问题了,跳出

           if (Change == 0) {

               break;

           }

       }

总结

这里有一个方便好记的顺口溜,外层循环n-1,内层循环n-1-i,记住这个顺口溜就可以很快的写出冒泡排序了。

猜你喜欢

转载自blog.csdn.net/qq_32691569/article/details/87375443