当前位置: 首页 > news >正文

几种常用的排序

int[] arr = new int[]{1, 2,8, 7, 5};这是提前准备好的数组
  1. 冒泡排序
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 temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}
}

  1. 选择排序
public static void selectionSort(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 temp = arr[i];arr[i] = arr[minIndex];arr[minIndex] = temp;}}
}

  1. 插入排序
public static void insertionSort(int[] arr) {int len = arr.length;for (int i = 1; i < len; i++) {int cur = arr[i];int j = i - 1;while (j >= 0 && arr[j] > cur) {arr[j+1] = arr[j];  j--;}arr[j+1] = cur;}
}

  1. 快速排序
public static void quickSort(int[] arr, int left, int right) {if (left >= right) {return;}int pivot = arr[right];int i = left, j = right - 1;while (i <= j) {while (i <= j && arr[i] < pivot) {i++;}while (i <= j && arr[j] >= pivot) {j--;}if (i < j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}} arr[right] = arr[i];arr[i] = pivot;quickSort(arr, left, i - 1);quickSort(arr, i + 1, right);
}

  1. 归并排序
public static void mergeSort(int[] arr, int left, int right) {if (left >= right) {return;}int mid = left + (right - left) / 2;mergeSort(arr, left, mid);mergeSort(arr, mid + 1, right);merge(arr, left, mid, right);
}
private static void merge(int[] arr, int left, int mid, int right) {int[] temp = new int[right - left + 1];int i = left, j = mid + 1;int k = 0;while (i <= mid && j <= right) {if (arr[i] <= arr[j]) {temp[k++] = arr[i++];} else {temp[k++] = arr[j++];}}while (i <= mid) {temp[k++] = arr[i++];}while (j <= right) {temp[k++] = arr[j++];}for (int p = 0; p < temp.length; p++) {arr[left + p] = temp[p];}
}

这些排序算法的时间复杂度从O(n^2)到O(nlogn)不等,其中冒泡排序和选择排序为O(n^2),插入排序和归并排序为O(nlogn),快速排序的时间复杂度为O(nlogn)。

http://www.lryc.cn/news/234090.html

相关文章:

  • 性能测试【第三篇】Jmeter的使用
  • 业务:业务系统检查项参考
  • 解决公网下,k8s calico master节点无法访问node节点创建的pod
  • 六边形架构
  • 基于单片机的智能家居安保系统(论文+源码)
  • 盘点3种Python网络爬虫过程中的中文乱码的处理方法
  • 小程序富文本图片大小问题
  • Diagrams——制作短小精悍的流程图
  • Elasticsearch基础条件查询
  • 【SAP-ABAP】SAP与外围系统对接方式
  • 云计算的发展趋势
  • 国民技术Cortex-M0系列单片机IAP升级
  • Pycharm中添加Python库指南
  • Oracle OCP / MySQL OCP认证容易通过吗
  • flutter web 中嵌入一个html
  • 使用Spark SQL读取阿里云OSS的数据
  • 【0235】修改私有内存(private memory)中的MyBEEntry时,st_changecount值前后变化
  • Linux学习命令之source
  • 2342. 数位和相等数对的最大和
  • FISCO BCOS 3.0【01】搭建第一个区块链网络
  • UE4动作游戏实例RPG Action解析四:装备系统
  • AIGC之Stable Diffusion
  • PHP接收并处理请求中携带的xml格式的信息
  • 信息安全相关标准
  • Python入门学习篇(一)——注释变量输入输出
  • 基于单片机智能液位水位监测控制系统设计
  • iOS 添加震动效果
  • 合并word中参考文献-(Endnote生成)
  • linux(centos7)常用命令 开启关闭防火墙
  • 数据结构与算法面试题——C++