headfirst插入排序
来源:互联网 发布:java bigdecimal最大值 编辑:程序博客网 时间:2024/06/01 07:29
import java.util.Arrays;public class code_01_InsertionSort { public static void insertionSort(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); } } } public static void swap(int[] arr,int i, int j){ arr[i] = arr[i] ^ arr[j]; arr[j] = arr[i] ^ arr[j]; arr[i] = arr[i] ^ arr[j]; } public static void comparator(int[] arr){ Arrays.sort(arr); } public static int[] generateRandomArray(int maxSize, int maxValue){ int[] arr = new int[(int)((maxSize + 1) * Math.random())]; for (int i = 0; i < arr.length; i++){ arr[i] = (int)((maxValue + 1) * Math.random() - (int)(maxValue * Math.random())); } return arr; } public static boolean isEqual(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; } public 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(); } public 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 void main(String[] args){ int testTime = 500000; int maxSize = 100; int maxValue = 100; boolean succeeed = true; for (int i = 0; i < testTime; i++){ int[] arr1 = generateRandomArray(maxSize, maxValue); int[] arr2 = copyArray(arr1); insertionSort(arr1); comparator(arr2); if (!isEqual(arr1, arr2)){ succeeed = false; break; } } System.out.println(succeeed ? "nice" : "fucker"); int[] arr = generateRandomArray(maxSize, maxValue); printArray(arr); insertionSort(arr); printArray(arr); }}
时间复杂度O(n^2),额外空间复杂度O(1);可以是稳定的,在最优情况下,前面都已经
排好序了,那么每次插入只需要比较一次,最优为O(n)。
阅读全文
0 0
- headfirst插入排序
- headfirst选择排序
- headfirst快速排序
- headfirst归并排序
- headfirst堆排序
- HeadFirst
- 插入排序-【插入排序】
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 第十二周 项目(3)
- 唯快不破:当你在地址栏输入一个URL地址回车后,将会发生什么事情
- Planning mobile robot on Tree (EASY Version) UVA
- 特殊的二街魔方
- 以太坊挖矿软件反抽水-eth 免抽成破解收费小插件 (完美兼容 Claymore 原版内核,长沙矿工,圣骑士,挖矿专家,矿工队长)
- headfirst插入排序
- Could not find method on interface org.apache.ibatis.executor.statement.StatementHandler
- 后缀数组学习总结
- java 双列集合Map及其子实现类
- 小米推送,华为推送,个推,阿里云推送集成(服务端JAVA开发)
- 关于计算机学习的总结
- echarts2的一个地图demo
- matlab 爬虫抓取A股当日每笔成交数据
- 分享一个牛人给java初学者的建议(图文完整版)