排序之初级篇
来源:互联网 发布:宜居星球知乎 编辑:程序博客网 时间:2024/05/23 20:50
排序算法之初级排序
冒泡排序
原理:计较相邻两个元素,将较大元素替换到后面,经历n-1次趟后,数组就排好序了。
代码:
public static void bubbleSort2(int[] nums){ if (nums.length == 0) return; int n = nums.length; for (int i=0;i<n-1;i++){ // 经历n-1趟 for (int j=0;j<n-i-1;j++){ if (nums[j] > nums[j+1]){ int tmp = nums[j]; nums[j] = nums[j+1]; nums[j+1] = tmp; } } } return;}
时间复杂度:O(N^2) 空间复杂度:O(1) 稳定性排序 数组的初始排列并不影响时间复杂度
插入排序
原理:假定前面的元素已经排好序了,不断比较前面的数据元素,直至找到合适插入位置。
代码:
public static void insertSort2(int[] nums){ int n = nums.length; for (int i=1;i<n;i++){ // 插入元素 int tmp = nums[i]; int j = i-1; for (;j>=0;j--){ if (nums[j] > tmp){ nums[j+1] = nums[j]; }else { break; } } nums[j+1] = tmp; }}
时间复杂度:O(N^2) 空间复杂度:O(1) 稳定性排序
评价:比冒泡排序好,因为它可以提前结束循环,对于近乎有序的数组,它的时间复杂度为O(N)。
选择排序
原理:不断在剩下的元素中进行比较然后找出最小的元素。
代码:
public static void selectSort2(int[] nums){ int n = nums.length; for (int i=0;i<n-1;i++){ for (int j=i+1;j<n;j++){ if (nums[j] < nums[i]){ int tmp = nums[j]; nums[j] = nums[i]; nums[i] = tmp; } } } return;}
时间复杂度:O(N^2) 空间复杂度:O(1) 稳定性排序 数组的初始排列并不影响其时间复杂度。
阅读全文
0 0
- 排序之初级篇
- 排序算法之初级排序
- 排序算法之初级排序
- 初级排序算法之选择排序
- 初级排序算法之插入排序
- 初级排序算法之希尔排序
- 初级排序算法之归并排序
- 初级排序算法之快速排序
- 初级排序算法之堆排序
- C#之初级篇
- UML之初级篇
- 初级排序
- 初级排序
- 初级排序
- 第1篇 初级排序算法
- 排序(1) 初级排序
- webservice之XFire初级篇
- webservice之CXF初级篇
- 配置class PATH
- rsync.sh第二版
- Android app反编译工具
- Spark2.x学习笔记:7、Spark应用程序设计
- asp.net如何为配置文件加密
- 排序之初级篇
- 微信公众号文章关键字
- springMVC中多数据源切换的两种主流实现方法(一)
- EL
- mysql替换Oracle中的ROWNUM
- 关于BigDecimal截取小数位数
- Tools(一)——BuildMethod
- SpringMVC注解开发方式二
- 创建maven多模块项目及ssm整合