范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

算法

  目录  汇总
  序号
  排序算法
  平均时间
  最好情况
  最差情况
  稳定度
  额外空间
  备注
  相对时间
  1
  冒泡算法   O(n 2 )   O(n)   O(n 2 )   稳定   O(1)   n 越小越好   182 ms   2
  选择算法   O(n 2 )   O(n 2 )   O(n 2 )   不稳定   O(1)   n 越小越好   53 ms   3
  插入算法   O(n 2 )   O(n)   O(n 2 )   稳定   O(1)   大部分排序好时好   16 ms   4
  快速算法   O(nlog 2 n)   O(nlog 2 n)   O(n 2 )   不稳定   O(nlog 2 n)   n 大时好   719 ms   5
  归并算法   O(nlog 2 n)   O(nlog 2 n)   O(nlog 2 n)   稳定   O(n)   n 大时好   550 ms   6
  希尔算法   O(nlog 2 n)   O(n)   O(n 2 )   不稳定   O(1)   197 ms/4 ms   7
  堆排序   O(nlog 2 n)   O(nlog 2 n)   O(nlog 2 n)   不稳定   O(1)   n 大时好   3 ms   8
  计数排序   O(n+k)   O(n+k)   O(n+k)   稳定   O(n+k)   k 是桶的数量   2 ms   9
  桶排序   O(n+k)   O(n)   O(n 2 )   稳定   O(n+k)   11 ms   10
  基数排序   O(n*k)   O(n*k)   O(n*k)   稳定   O(n+k)   4 ms   11
  优先队列   不稳定   O(n)   9 ms   12
  Java API   O(1)   4 ms 1. 冒泡排序   每轮循环确定最值; public void bubbleSort(int[] nums){ int temp; boolean isSort = false; //优化,发现排序好就退出 for (int i = 0; i < nums.length-1; i++) { for (int j = 0; j < nums.length-1-i; j++) { //每次排序后能确定较大值 if(nums[j] > nums[j+1]){ isSort = true; temp = nums[j]; nums[j] = nums[j+1]; nums[j+1] = temp; } } if(!isSort){ return; } else { isSort = false; } } }2. 选择排序   每次选出最值,再交换到边上; public void selectSort(int[] nums){ for (int i = 0; i < nums.length-1; i++) { int index = i; int minNum = nums[i]; for (int j = i+1; j < nums.length; j++) { if(nums[j] < minNum){ minNum = nums[j]; index = j; } } if(index != i){ nums[index] = nums[i]; nums[i] = minNum; } } }3. 插入排序   对循环的每个数找到属于自己的位置插入; public void insertionSort(int[] nums){ for (int i = 1; i < nums.length; i++) { int j = i; int insertNum = nums[i]; while(j-1 >= 0 && nums[j-1] > insertNum){ nums[j] = nums[j-1]; j--; } nums[j] = insertNum; } }4. 快速排序   选一个基本值,小于它的放一边,大于它的放另一边; public void quickSortDfs(int[] nums, int left, int right){ if(left > right){ return; } int l = left; int r = right; int baseNum = nums[left]; while(l < r){ //必须右边先走 while(nums[r] >= baseNum && l < r){ r--; } while(nums[l] <= baseNum && l < r){ l++; } int temp = nums[l]; nums[l] = nums[r]; nums[r] = temp; } nums[left] = nums[l]; nums[l] = baseNum; quickSortDfs(nums, left, r-1); quickSortDfs(nums, l+1, right); }5. 归并排序   分治算法; //归 public void mergeSortDfs(int[] nums, int l, int r){ if(l >= r){ return; } int m = (l+r)/2; mergeSortDfs(nums, l, m); mergeSortDfs(nums, m+1, r); merge(nums, l, m, r); } //并 private void merge(int[] nums, int left, int mid, int right){ int[] temp = new int[right-left+1]; int l = left; int m = mid+1; int i = 0; while(l <= mid && m <= right){ if(nums[l] < nums[m]){ temp[i++] = nums[l++]; } else { temp[i++] = nums[m++]; } } while(l <= mid){ temp[i++] = nums[l++]; } while(m <= right){ temp[i++] = nums[m++]; } System.arraycopy(temp, 0, nums, left, temp.length); }6. 希尔排序   引入步长减少数字交换次数提高效率; 6.1 希尔-冒泡排序(慢)public void shellBubbleSort(int[] nums){ for (int step = nums.length/2; step > 0 ; step /= 2) { for (int i = step; i < nums.length; i++) { for (int j = i-step; j >= 0; j -= step) { if(nums[j] > nums[j+step]){ int temp = nums[j]; nums[j] = nums[j+step]; nums[j+step] = temp; } } } } }6.2 希尔-插入排序(快)public void shellInsertSort(int[] nums){ for (int step = nums.length/2; step > 0; step /= 2) { for (int i = step; i < nums.length; i++) { int j = i; int insertNum = nums[i]; while(j-step >= 0 && nums[j-step] > insertNum){ nums[j] = nums[j-step]; j-=step; } nums[j] = insertNum; } } }7. 堆排序   大顶堆实现升序,每次将最大值移到堆的最后一个位置上; public void heapSort2(int[] nums) { for(int i = nums.length/2-1; i >= 0; i--){ sift(nums, i, nums.length); } for (int i = nums.length-1; i > 0; i--) { int temp = nums[0]; nums[0] = nums[i]; nums[i] = temp; sift(nums, 0, i); } } private void sift(int[] nums, int parent, int len) { int value = nums[parent]; for (int child = 2*parent +1; child < len; child = child*2 +1) { if(child+1 < len && nums[child+1] > nums[child]){ child++; } if(nums[child] > value){ nums[parent] = nums[child]; parent = child; } else { break; } } nums[parent] = value; }8. 计数排序   按顺序统计每个数出现次数; public void countSort(int[] nums){ int max = Integer.MIN_VALUE; int min = Integer.MAX_VALUE; for(int num : nums){ max = Math.max(max, num); min = Math.min(min, num); } int[] countMap = new int[max-min+1]; for(int num : nums){ countMap[num-min]++; } int i = 0; int j = 0; while(i < nums.length && j < countMap.length){ if(countMap[j] > 0){ nums[i] = j+min; i++; countMap[j]--; } else { j++; } } }9. 桶排序   类似计数排序,不同点在于统计的是某个区间(桶)里的数; public void bucketSort(int[] nums){ int max = Integer.MIN_VALUE; int min = Integer.MAX_VALUE; for(int num : nums){ max = Math.max(max, num); min = Math.min(min, num); } int bucketCount = (max-min)/nums.length+1; List> bucketList = new ArrayList<>(); for (int i = 0; i < bucketCount; i++) { bucketList.add(new ArrayList<>()); } for(int num : nums){ int index = (num-min)/nums.length; bucketList.get(index).add(num); } for(List bucket : bucketList){ Collections.sort(bucket); } int j = 0; for(List bucket : bucketList){ for(int num : bucket){ nums[j] = num; j++; } } }10. 基数排序   按个、十、百位依次归类排序; public void radixSort(int[] nums){ int min = Integer.MAX_VALUE; int max = Integer.MIN_VALUE; for (int num : nums) { min = Math.min(min, num); max = Math.max(max, num); } for (int i = 0; i < nums.length; i++) { nums[i] -= min; } max -= min; int maxLen = (max+"").length(); int[][] bucket = new int[nums.length][10]; int[] bucketCount = new int[10]; for (int i = 0, n = 1; i < maxLen; i++, n*=10) { for (int num : nums) { int digitVal = num / n % 10; bucket[bucketCount[digitVal]][digitVal] = num; bucketCount[digitVal]++; } int index = 0; for (int j = 0; j < bucketCount.length; j++) { if(bucketCount[j] > 0){ for (int k = 0; k < bucketCount[j]; k++) { nums[index] = bucket[k][j]; index++; } } bucketCount[j] = 0; } } for (int i = 0; i < nums.length; i++) { nums[i] += min; } }11. 使用集合或 API11.1 优先队列public void priorityQueueSort(int[] nums){ PriorityQueue queue = new PriorityQueue<>(); for(int num : nums){ queue.offer(num); } for (int i = 0; i < nums.length; i++) { nums[i] = queue.poll(); } }11.2 Java APIpublic void arraysApiSort(int[] nums){ Arrays.sort(nums); }

苹果跟高通的授权费问题越闹越大了苹果跟高通之间的授权费纠纷,现在又有了新的进展。后者在月初提出反诉后,现在又发布了一份声明,其中提到苹果最近已停止向iPhone制造商支付涉及高通的授权费,因为其坚持认为自己已经为70亿美元?苹果卷入专利侵权,扬言退出英国英国你侵犯专利权,赔偿!苹果要赔偿,我就退出英国市场!科技巨头苹果公司摊上麻烦事儿了。今年6月,英国一家高等法院判决苹果侵犯了英国公司OptisCellular的3G和4G专利权,三星危险!苹果决定自研屏幕为iPhoneX真全面屏努力弃对于苹果来说,未来很长一段时间iPhone依然是其主要收入来源,所以让它保持高度的自由性不被过多的因素牵制,就是重中之重。去年他们发布的iPhoneX手机,采用了异性全面屏,并且是谷歌Pixel3XL屏幕显示效果拿下ampampquotAampampquot与iPhoneXS并列第一DisplayMate是一家专业的屏幕显示评测机构,该机构的屏幕等级最高为A级。早在8月份时,DisplayMate就钦定三星GalaxyNote9的屏幕为手机最佳,给与A评级。当小爱同学App在苹果应用商店下架原因未知7月22日,TechWeb查询发现,小爱同学App在苹果AppStore应用商店无法被搜索到,疑似被苹果下架。目前下架原因未知,小米方面尚未作出回应。TechWeb在苹果AppSt三星显示器称摔不坏的可弯曲屏幕已通过美国安全性测试7月28日消息,据国外媒体报道,三星电子旗下显示面板业务三星显示器(SamsungDisplay)日前表示,其开发的摔不坏的可弯曲屏幕(UnbreakableFlexiblePan苹果向华为商标开战,又输了苹果和华为两家公司可以说是老对头了,在电子通讯领域针锋相对。近日,知协了解到,商标局发布了一则关于华为申请的HUAWEIMATEPOD商标的异议决定书。根据这份决定书显示,华为这件长津湖连创国庆档纪录,电影市场终于回暖了吗?长津湖上映7天,目前票房破30亿,预测最终总票房超53亿。毫无疑问,长津湖已经成为有史以来国庆档票房成绩最好的一部作品。10月1日到10月6日,国庆档大盘连续六天维持在6亿。在春节土豪机8848钛金机注册8848商标,数字商标也能注册?8848!这个数字是不是很熟悉?它正是珠穆朗玛峰的高度。同时,也是一款土豪机8848钛金机的品牌。8848钛金机是北京珠穆朗玛移动通信有限公司旗下品牌,其品牌定位的是中国顶尖商业精湖畔大学更名后,新旧商标何去何从?5月16日,有人目击在湖畔大学门口,有工人用气焊将刻有湖畔大学石头上的金字校名抹掉。这段有关湖畔大学改名视频在网上流传,引起了一阵热议。5月17日,湖畔大学工作人员回应称湖畔自创立用质价比挑战日系大佬,全新一代TXL对比本田URV胜算几何随着中国家庭越来越富足,人们购买商品时也偏向更大更豪华的产品,这一现象在汽车方面非常明显,大部分人从小型紧凑型轿车SUV逐步转向中型,甚至是中大型级别。在这个产品类型中很多车型更加
郭威是否支持调查真相,听了其妻田静的回答,网友放心了28年错换人生事件并没有随着姚策的离世而戛然而止,而是愈演愈烈。可是,事件究竟怎样发展一切都是未知,我们也在追寻着真相。事件回顾28年前,许妈在河南淮河医院生下一个白白胖胖的大儿子和利时成功签约国内首次使用CO制绿色甲醇项目近日,和利时集团旗下杭州和利时自动化有限公司(以下简称杭和)成功签约河南顺成集团旗下安阳顺利环保科技有限公司(以下简称安阳顺利环保)二氧化碳加氢制绿色甲醇项目。本项目建成达产后,预力劲集团ampampamp北京化工大学先进注塑研发中心正式揭牌成立10月28日,力劲集团北京化工大学先进注塑研发中心揭牌仪式在中山力劲机械有限公司举行。北京化工大学机电工程学院张亚军教授金志明副教授何继敏副教授,力劲集团CEO刘卓铭先生中山力劲机为什么很多人信用卡逾期了没被起诉呢?这么多银行逾期这么多年,就有一家广州银行把我起诉了,而且我起诉的原因也很简单,因为银行的利息在短时间内已经涨到了,没有办法在涨的地步,中途我与他协商还款,他的态度非常的恶劣,经常引三一重工携手宁德时代攻关!每年减排34万吨CO10月23日上午,三一重工200台电动搅拌车交付暨1000台电动搅拌车采购签约仪式在河南新密举行,均创下国内混凝土行业数量最大的单次电动产品交付签约纪录。按照郑州市推广使用纯电动混杭叉智能自研天目系统CeMAT首秀10月26日,CeMATASIA2021(2021亚洲国际物流技术与运输系统展览会)在上海新国际博览中心隆重揭幕,聚焦智慧物流技术最前沿。杭叉智能携智能视觉导航系统天目重磅亮相,受殡仪馆秋季招聘已开启。虽然很多人不愿意干但好歹工资高啊殡仪馆迎来了秋季招聘,本来学生对此是毫不关心的,但是听说这份工作月薪能拿到23万,就十分感兴趣。说起殡仪馆,学生可能都会有所顾忌,尤其平时胆子比较小的人,其实学生不是很了解,殡仪馆各财产险公司报案电话序号保险公司报案电话1hr人保财险95518hr2hr太平洋财险95500hr3hr天安财险95505hr4hr平安产险95511hr5hr永安保险95502hr6hr太平财险95各财产险公司报案电话序号保险公司报案电话1hr人保财险95518hr2hr太平洋财险95500hr3hr天安财险95505hr4hr平安产险95511hr5hr永安保险95502hr6hr太平财险95科技美学,将降噪进行到底!HAKIITIMEPRO真无线蓝牙耳机体验每年的双11都是给自己换新的好理由,蓝牙耳机也不例外。这两年自己换了好多个,在体验中离自己满意的那一款总是差那一点点感觉。直到最近遇到了HAKIITIMEPRO真无线蓝牙耳机,舒适辛苦工作4年,现在工厂跨省搬迁,我该默默离开,还是争取补偿?我在一家工厂从事技术岗位近4年,老板计划年后将工厂搬到其它省份,我不想离开现在的城市,可以要求补偿金吗?网友如是问最近有网友私信我,因工厂跨省搬迁,老板给了员工3种选择1。随工厂一