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;
    }


    }
  • 相关阅读:
    WebService学习--(一)webservice相关概念
    根据日期推断某天某周某日
    Eclipse快捷键
    Java IO学习--(五)字节和字符数组
    Java IO学习--(四)网络
    Java IO学习--(三)通道
    Java IO学习--(二)文件
    Java IO学习--(一)概述
    JVM学习--(八)java堆分析
    Linux加密、安全版块、root密码破解
  • 原文地址:https://www.cnblogs.com/bigdata-stone/p/11029545.html
Copyright © 2011-2022 走看看