冒泡,选择,插入排序的效率比较
来源:互联网 发布:域名西部数码 编辑:程序博客网 时间:2024/06/05 02:24
冒泡排序
- 思想:每次将最大的数字移动到数组的最后面。比较复杂度和操作复杂度都较高。
- 代码实现
public static void bubbleSort(int[] arr) { int len = arr.length; for(int i=0;i<len-1;i++) { for(int j=0;j<len-i-1;j++) { if(arr[j]>arr[j+1]) { int tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; } } } }
选择排序
- 思想:假设每次最小值(最大值)为第一个,然后遍历之后的元素,若有更小的元素,则该元素的下标就为minIndex。最后,将最小的值换至第一个(i)位置。
- 代码实现
public static void selectSort(int[] arr) { int len = arr.length; for(int i=0;i<len-1;i++) { int minIndex = i; for(int j=i+1;j<len;j++) { if(arr[j]<arr[minIndex]) minIndex = j; } if(minIndex!=i) { int tmp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = tmp; } } }
插入排序
- 思想:将数组分为有序和无须的两部分,每次从无须的数组中选出一个元素与有序数组进行比较,并将其插入到有序数组中。比较复杂度和操作复杂度都较小。
* 每次必须记下无序数组的第一个值,便于后移和插入。 - 代码实现
public static void insertSort(int arr[]) { for(int out = 1;out<arr.length;out++) { int in = out; int temp = arr[out]; while(in>0&&arr[in-1]>temp) { arr[in] = arr[in-1]; in--; } arr[in] = temp; } }
效率比较
public static void main(String[] args) { int[] arr = new int[100000]; for(int i=0;i<arr.length;i++) { arr[i] = (int)(Math.random()*100000); } long before = System.currentTimeMillis(); insertSort(arr); // selectSort(arr); // bubbleSort(arr); long after = System.currentTimeMillis(); System.out.println("执行时间是: "+(after-before));
最终结果(100000个元素的数组排序时间)
- 冒泡排序: 19446
- 选择排序: 5309
- 插入排序: 1589
最终结论显示,插入排序的效率要高于选择排序和冒泡排序。
0 0
- 冒泡,选择,插入排序的效率比较
- 选择,插入,交换,冒泡,希尔排序算法的效率比较
- 基本排序算法(冒泡、选择、插入)的效率比较
- 冒泡、选择、插入、归并、希尔、快速排序效率比较代码
- 冒泡、选择、插入、归并、希尔、快速排序效率比较代码 .
- 冒泡排序、选择排序、插入排序的比较
- 冒泡排序,选择排序,插入排序的比较
- 冒泡排序、插入排序、选择排序的原理及比较
- 选择 插入 快速 冒泡排序算法的比较
- Java对一维数组排序:冒泡,选择,插入,比较效率
- 选择、插入、冒泡排序实现和比较
- 冒泡、插入排序的比较
- 冒泡排序,选择排序,插入排序,快速排序的比较及优化
- 冒泡、选择、插入、归并、快速、堆排序效率测试
- 插入法排序|冒泡发排序|快速排序法|选择排序法 四种排序法的效率
- 经典排序之选择、冒泡、插入排序与系统排序的用时比较(Java)
- java冒泡排序、选择排序、插入排序算法的核心思想及其比较
- 数组的排序(选择/冒泡/插入排序)
- JVM学习笔记
- 将二叉树拆成链表 Flatten Binary Tree to Linked List
- 挨踢职场求生法则-----我在IT职场打滚超过15年了,从小小的程序员做到常务副总
- 判断int类型是否为空
- html个人模板
- 冒泡,选择,插入排序的效率比较
- □□□ + □□□ = □□□
- Window消息机制
- Matlab做快速傅里叶变换
- 初学Phaser.js之管中窥豹
- 【CSS3】box-sizing 属性
- 漫谈android系统(1)解析android编译
- Fragment 操作原理
- Bootstrap之轮播图