Java经典排序算法的含义解析

来源:互联网 发布:什么是宏编程鼠标 编辑:程序博客网 时间:2024/05/21 06:33

想想已经和Java打了五六年的交道了,而越是时间越长,那些基本的东西就差不多都忘了差不多,今天碰巧看到很常见的三种Java算法,还是抽一点时间用自己的方式解释给自己听,然后彻底吸收一下,免得日后有人玩笑考我,我不会,太丢人。。。。

啥是冒泡排序、选择排序和插入排序。

个人YY开始了:

冒泡排序

相邻的数字两两进行比较
按照[从小到大] 或者[从大到小] 的顺序进行交换
这样一趟过去后,[最大或最小]的数字被交换到了最后一位
然后再从头开始进行两两比较交换,直到倒数第二位时结束 。
最先排好的是后面的位置~,而排好队的最后那几个数在每新开始的一轮排序中都不管啦

举个例子好了,比如一串数字升序排列:代码贴出来~

 public void bubbleSort(int[] a) {      for (int i = 1; i < a.length; i++) {// 有几个数就需要来几个轮回           for (int j = 0; j < a.length - i; j++) {//排好的后几个就不管啦                if (a[j] > a[j + 1]) {                     int temp = a[j];                     a[j] = a[j + 1];                     a[j + 1] = temp;                }           }     } }

选择排序

可以按照[从小到大] 或者[从大到小] 的顺序进行交换
我们就说从[从小到大] 的排序吧,首先呢,找出序列中最小的数去占了第一个位置,
最先排好的就是排头~,而排好队的前面那几个数在每新开始的一轮排序中都不管啦

举个例子好了,比如一串数字升序排列:代码贴出来~

 public void selectSort(int[] a) {      for (int i = 0; i < a.length - 1; i++) {//领出第一个           int k = i;           for (int j = i + 1; j < a.length; j++) {//排好的就不管啦                if (a[k] > a[j]) {//两两对比  大的滚后边去啦                 k = j;            }       }       if (k != i) {//说明只换一次位置            int temp = a[i];            a[i] = a[k];            a[k] = temp;       }      }}

插入排序

可以按照[从小到大] 或者[从大到小] 的顺序进行交换
每步将一个待排序的对象,按其排序码大小,插入到前面已经排好序的一组对象的适当位置上,直到对象全部插入为止。
举个例子好了,比如一串数字升序排列:代码贴出来~

 public void insertSort(int[] a) {    for (int i = 1; i < a.length; i++) {      for (int j = i; j > 0; j--) {//当前位置的数和它前面排好的进行对比           if (a[j - 1] > a[j]) {//依次对比 寻找位置                int temp = a[j - 1];                a[j - 1] = a[j];                a[j] = temp;           } else {                break;           }        }    }}
0 0
原创粉丝点击