数据结构与算法(26)——排序(一)
来源:互联网 发布:vue.js和jquery 编辑:程序博客网 时间:2024/05/18 00:10
冒泡排序(Bubble Sort) 是一种最简单的排序算法。基本思想:迭代地对输入序列中的第一个元素到最后一个元素进行两两比较,当需要时交换两个元素位置。
public static void bubbleSort(int[] array) { // 获取数组元素个数 int n = array.length; // 这种for循环是为了避免比较已经排好序的数据 for (int pass = n - 1; pass >= 0; pass--) { // 只比较未排序部分 for (int i = 0; i < pass; i++) { // 最大值向后移动 if (array[i] > array[i + 1]) { int temp = array[i]; array[i] = array[i + 1]; array[i + 1] = temp; } } }}
可以通过添加标记来改进冒泡算法。在排序过程中,没有交换操作则意味着排序完成。如果序列已经是有序的,则可以通过判断该标记来结束算法。
public static void bubbleSortImproved(int[] array) { // 获取数组元素个数 int n = array.length; // 标记每一趟排序是否出现数据交换 boolean swapped = true; // 这种for循环是为了避免比较已经排好序的数据 for (int pass = n - 1; pass >= 0 && swapped; pass--) { swapped = false; // 只比较未排序部分 for (int i = 0; i < pass; i++) { // 最大值向后移动 if (array[i] > array[i + 1]) { int temp = array[i]; array[i] = array[i + 1]; array[i + 1] = temp; // 出现数据交换 swapped = true; } } }}
选择排序(Selection Sort)是一种原地排序(即不需要额外的存储空间)算法,适用于小文件。思路:1.寻找序列中最小值2.用当前位置的交换最小值3.对所有元素重复上述过程,直到序列排序完成
public static void selectionSort(int[] array) { // 获取数组元素个数 int n = array.length; // 最小值的下标 int min ; // 临时变量 int temp; // 寻找最小值位置并与当前位置交换 for (int i = 0; i < n; i++) { min = i; // 寻找最小值位置 for (int j = i + 1; j < n; j++) { if (array[j] < array[min]) { min = j; } } // 交换元素 temp = array[i]; array[i] = array[min]; array[min] = temp; }}
插入排序(Selection Sort)是一种简单且高效的比较排序算法。典型的原地排序 思路:每次从输入数据中移除一个元素并将其插入已排序序列的正确位置,直到所有输入输入元素都插入有序序列中。
public static void insertionSort(int[] array) { // 获取数组元素个数 int n = array.length; // 临时变量 int temp; // 有序序列的循环变量 int j; for (int i = 1; i < n; i++) { // 获取输入数据 temp = array[i]; j = i; // 排序 while (j >= 1 && (array[j - 1] > temp)) { array[j] = array[j - 1]; j--; } // 将数据放入有序序列 array[j] = temp; }}
测试代码,敬请参考数据结构与算法(JAVA版)
阅读全文
0 0
- 数据结构与算法(26)——排序(一)
- 算法与数据结构(一)--快速排序
- 【数据结构与算法分析(一)】排序
- 数据结构与算法--查找与排序(一)
- 【数据结构】数据结构与算法(一)——线性结构
- 数据结构与算法整理之排序(一)
- 数据结构--排序算法(一)冒泡排序
- 数据结构与算法-排序(一)
- 数据结构与算法(27)——排序(二)
- 数据结构与算法——选择排序(Java实现)
- 数据结构与算法——插入排序(Java实现)
- 数据结构与算法——希尔排序(Java实现)
- 数据结构与算法(25)——拓扑排序
- 数据结构与算法(一)
- 数据结构与算法(一)
- 数据结构与算法(一)
- 数据结构与算法(一)
- 数据结构与算法(一)
- Dataquest学习总结[8]-Machine Learning
- 数据结构
- ubuntu git 服务器环境搭建
- canvas 画一幅画
- 如何构建一个分布式爬虫:基础篇
- 数据结构与算法(26)——排序(一)
- Java面试题全集(上)
- 1151: 超级楼梯
- 点击主窗口拖动
- 索引表+Pl/SQL集合类型
- tomcat远程debug参数添加
- ADB 常用命令
- 贪吃蛇游戏
- 函数模版和类模版