经典算法总结

♀尐吖头ヾ 提交于 2019-12-22 06:40:37

最经典的算法莫过于选择排序和冒泡排序:

在总结之前先看了如下一篇博客:

https://blog.csdn.net/chen13579867831/article/details/78790853

Java中的选择排序和冒泡排序思想及代码实现

博主对这两种排序方法,介绍得比较清楚,不过这里我扣扣其中的细节并加上我自己的一些理解。

  • 选择排序(降序):
   // i 控制排序次数,取值从0到array.length-2,最后一个元素不用取出
        for(int i = 0 ;i<array.length-1;i++) {  

        /* j 控制每次排序比较次数,每次比较从取出来要比较的值后面第一个元素
        开始,到该数组最后一个元素比较结束,所以每次比较j从i+1开始,到
        array.length-1结束*/

            for(int j = i+1;j<array.length;j++) { 
                if(array[i]<array[j]) {
                    int temp = array[i];
                    array[i] = array[j];
                    array[j] = temp;
                    count++;
                }
            }
        }
        System.out.println(Arrays.toString(array));
  • 冒泡排序(降序):
public class BubbleSort {
    public static void main(String[] args){
        //初始化一个数组
        int[] arr = {1,23,4,6,43};

        //外层for循环代表排序次数,数组长度为arr.length-1,共比较arr.length-2次;
        for(int i = 0;i<arr.length-1;i++) {

            //内层for循环代表每次排序比较的次数,每次都是从0索引开始比较;
            //第一次从0比到arr.length-1,比较arr.length-2-0次;
            //第二次从0到arr.length-2,比较arr.length-2-1次;
            //......
            for(int j = 0;j<arr.length-1-i;j++) {
                if(arr[j]<arr[j+1]) {
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

选择排序和冒泡排序小结:
选择排序是把每次比出来的结果往前放,确定前面并在下轮循环中丢弃不参与;冒泡排序是把每次比出来的结果往后放,确定后面并在下轮循环中丢弃不参与。 
关于这两把排序方法,最主要的是掌握其思想,具体推理过程无须掌握,知道如何使用即可。

PS.

再研究一下,快速排序和插入排序。

https://blog.csdn.net/zyj0813/article/details/78296758

JAVA中常见的四种排序--冒泡排序、选择排序、插入排序和快速排序 详解

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!