zoukankan      html  css  js  c++  java
  • 插入排序

    package com.cisco.www.sort;

    import java.util.Arrays;

    /**
    * 插入排序,时间复杂度和数据状况有关系的,这里就有最好情况,最坏情况和平均情况
    */
    public class InsertSort {
    public static void insertSort(int[] arr){
    if(arr==null||arr.length<2){
    return;
    }
    for(int i = 1 ; i<arr.length;i++){
    for(int j = i-1;j>=0&&arr[j]>arr[j+1];j--){
    swap(arr,j,j+1);
    }
    }
    }

    private static void swap(int[] arr, int i, int j) {
    int temp = arr[i];
    arr[i]=arr[j];
    arr[j]=temp;
    }



    //for test
    public static int[] generateRandomArray(int size,int value){
    //生成长度随机的数组
    int[] arr= new int[(int)((size+1)*Math.random())];
    for(int i = 0 ;i<arr.length;i++){
    //数组中的每个值也是随机的
    arr[i]=(int)((value+1)*Math.random())-(int)(value*Math.random());
    }
    return arr;
    }
    //大样本测试
    public static void main(String[] args){
    int testTime = 50000000;
    int size =10;
    int value=100;
    boolean succeed = true;
    for(int i= 0 ;i<testTime;i++){
    int[] arr1 =generateRandomArray(size,value);
    int[] arr2 = copyArray(arr1);
    int[] arr3 = copyArray(arr1);
    insertSort(arr1);
    comparator(arr2);
    if(!isEquals(arr1,arr2)){
    succeed=false;
    break;
    }
    }
    System.out.println(succeed?"Nice!":"Fucking fucked!");
    int[] arr = generateRandomArray(size,value);
    printArray(arr);
    insertSort(arr);
    printArray(arr);
    }

    private static void printArray(int[] arr) {
    if(arr==null){
    return;
    }
    for(int i = 0;i<arr.length;i++){
    System.out.print(arr[i]+" ");
    }
    System.out.println();
    }

    private static void comparator(int[] arr) {
    Arrays.sort(arr);
    }

    private static int[] copyArray(int[] arr) {
    if(arr==null){
    return null;
    }
    int[] res = new int[arr.length];
    for(int i = 0 ;i<arr.length;i++){
    res[i]=arr[i];
    }
    return res;
    }
    public static boolean isEquals(int[] arr1,int[] arr2){
    if((arr1==null&&arr2!=null)||(arr1!=null&&arr2==null)){
    return false;
    }
    if(arr1==null&&arr2==null){
    return true;
    }
    if(arr1.length!=arr2.length){
    return false;
    }
    for(int i =0 ;i<arr1.length;i++){
    if(arr1[i]!=arr2[i]){
    return false;
    }

    }
    return true;
    }


    }
  • 相关阅读:
    【BZOJ 2124】【CodeVS 1283】等差子序列
    【BZOJ 1036】【ZJOI 2008】树的统计Count
    【BZOJ 1901】【ZJU 2112】Dynamic Rankings
    【BZOJ 3924】【ZJOI 2015】幻想乡战略游戏
    【BZOJ 4103】【THUSC 2015】异或运算
    【BZOJ 4513】【SDOI 2016】储能表
    【HDU 3622】Bomb Game
    【BZOJ 3166】【HEOI 2013】Alo
    【BZOJ 3530】【SDOI 2014】数数
    【BZOJ 4567】【SCOI 2016】背单词
  • 原文地址:https://www.cnblogs.com/bigdata-stone/p/11029545.html
Copyright © 2011-2022 走看看