八大排序算法

来源:互联网 发布:excel无法粘贴数据 编辑:程序博客网 时间:2024/05/29 15:48

直接插入算法:时间复杂度O(n^2)

import java.util.*;public class DigPow {  public static void main(String[] args){    // Insert brilliant code here//插入排序int[] a=new int[]{3,1,5,7,2,4,9,6};for(int i=1;i<a.length;i++) {if(a[i]<a[i-1]){int temp=a[i]; int j=i-1;while(j>=0&&a[j]>temp){   //注意此处一定是j>=0在前,不然会报数组溢出的问题a[j+1]=a[j];j--;}a[j+1]=temp;}System.out.println(Arrays.toString(a));}System.out.println(Arrays.toString(a));  }}

希尔排序:时间复杂度:O(nlogn)

import java.util.*;public class DigPow {  public static void main(String[] args){    // Insert brilliant code here//希尔排序int[] arrays=new int[]{26, 53, 67, 48, 57, 13, 48,13, 32, 60, 50};int incrementNum = arrays.length/2;        while(incrementNum >0){            for(int i=0;i<arrays.length;i++){                //进行插入排序
                                            if(arrays[i]>arrays[i+incrementNum]){                        int temple = arrays[i];                        arrays[i] = arrays[i+incrementNum];                        arrays[i+incrementNum] = temple;                    }            }            //设置新的增量            incrementNum = incrementNum/2;        }System.out.println(Arrays.toString(arrays));  }}

选择排序 时间复杂度:O(n^2);
import java.util.*;public class DigPow {  public static void main(String[] args){    // Insert brilliant code here//选择排序int[] a=new int[]{49,38,65,97,76,13,27,14,10};for(int i=0;i<a.length;i++){int min=i;for(int j=i;j<a.length;j++){if(a[min]>a[j])    //注意这里一定要换为min,因为后文中会对min进行替换。{min=j;}}if(i!=min){int temp=a[min];a[min]=a[i];a[i]=temp;}System.out.println(Arrays.toString(a));}System.out.println(Arrays.toString(a));  }}

选择排序的优化:可以一趟确定出两个值:最大以及最小:

冒泡排序:时间复杂度:

0 0