简单排序算法-创新互联

1.冒泡排序:                 1.算法描述:

        1. 首先在未排序数组的首位开始,和后面相邻的数字进行比较,如果前面一个比后面一个大那么则进行交换。
     2.接下来将第二个位置的数字和后面相邻的数字进行比较,如果大那么则进行交换,直到将大的数字交换的数组的尾部。
     3.然后再从排序的数组的首位开始,重复前面两部将大的数字交换到未排序数组的尾部如此反复,直到排序完毕。
     (交换到尾部的数字是已经拍好序的)。

网站设计、网站制作服务团队是一支充满着热情的团队,执着、敏锐、追求更好,是创新互联的标准与要求,同时竭诚为客户提供服务是我们的理念。创新互联公司把每个网站当做一个产品来开发,精雕细琢,追求一名工匠心中的细致,我们更用心!
package simple;

import java.util.Arrays;

public class BubbleSort {
    public static void main(String[] args) {
        int[] arrs={8,6,1,2,2,5,4,12,9};
        bubbleSort(arrs);
        System.out.println(Arrays.toString(arrs));
    }

    public static void bubbleSort(int[] arrs){
        int num=0;
//        for (int i = arrs.length-1; i >=0; i--) {
        for (int i = 1; i arrs[j+1]){
                    num=arrs[j];
                    arrs[j]=arrs[j+1];
                    arrs[j+1]=num;
                }
            }
        }
    }
}

2.选择排序:                 1.算法描述:

       首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,
然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
以此类推,直到所有元素均排序完毕。

package simple;

import java.util.Arrays;

public class SelectionSort {
    public static void main(String[] args) {
        int[] arrs={8,8,1,7,2,5,4,12,9};
        selectionSort(arrs);
        System.out.println(Arrays.toString(arrs));
    }

    public static void selectionSort(int[] arrs){
        int middle;
        for (int i = 0; i< arrs.length; i++) {
//            最小值的索引
                int index=i;
            for (int j = i+1; j< arrs.length; j++) {
                if(arrs[index]>arrs[j]){
                    index=j;
                }
                    middle=arrs[i];
                    arrs[i]=arrs[index];
                    arrs[index]=middle;
                }
            }
        }
    }

3.插入排序:                  1.算法描述:

  1从第一个元素开始,该元素可以认为已经被排序;
     2取出下一个元素,在已经排序的元素序列中从后向前扫描;
     3如果该元素(已排序)大于新元素,将该元素移到下一位置;
     4重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
     5将新元素插入到该位置后;
     6重复步骤2~5。

package simple;

import java.util.Arrays;

public class InsertionSort {
    public static void main(String[] args) {
        int[] arrs={8,6,1,2,2,5,4,12,9};
        insertionSort(arrs);
        System.out.println(Arrays.toString(arrs));
    }

    public static void insertionSort(int[] arrs){

        for (int i = 1; i< arrs.length; i++) {
            int num=arrs[i];
            for (int j = i-1; j >=0 ; j--) {
                if (arrs[j]>=num){
                    arrs[j+1]=arrs[j];
                }else {
                    arrs[j+1]=num;
                    break;
                }
                if (j==0){
                    arrs[0]=num;
                }
            }
        }
    }
}
4 三种算法的比较

上面讲的三种排序,冒泡、选择、插入由于均使用的了嵌套循环,并且循环基本上都要遍
历所有的元素,所以用大 O 表示法都需要 O(N^2) 时间级别。
但是三种排序还是有一些细微的区别(循环比较次数、交换次数)
     冒泡排序书写是最简单的,但是平均性能是没有选择排序和插入排序好的。因为它的循环比较次数和交换次数都比较多
     选择排序循环比较的次数多,但是交换的次数少
     插入排序的交换次数多,但是循环比较的次数少

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


名称栏目:简单排序算法-创新互联
文章路径:http://pwwzsj.com/article/djciho.html