排序算法-Java实现
常见的八种排序分类:
【冒泡排序】
原理:相邻两个数据进行两两比较,较大的放在右侧,较小的放在左侧。从开始到最后,所以最后一位是最大的。重复上述操作,除了最后一个
Java代码:
1 for (int i = 0; i < arr.length - 1; i++) { 2 for (int j = 0; j < arr.length - i - 1; j++) { 3 if (arr[j] > arr[j + 1]) { 4 int temp = arr[j]; 5 arr[j] = arr[j + 1]; 6 arr[j + 1] = temp; 7 } 8 } 9 }
【快速排序】
原理:先从数列中取出一个数作为key值;将比这个数小的数全部放在它的左边,大于或等于它的数全部放在它的右边;对左右两个小数列重复第二步,直至各区间只有1个数
java代码:
1 public static void quickSort(int[] arr, int low, int high) { 2 int i, j, temp, t; 3 if (low > high) return; 4 i = low; 5 j = high; 6 //temp就是基准位 7 temp = arr[low]; 8 9 while (i < j) { 10 //先看右边,依次往左递减 11 while (temp <= arr[j] && i < j) { 12 j--; 13 } 14 //再看左边,依次往右递增 15 while (temp >= arr[i] && i < j) { 16 i++; 17 } 18 //如果满足条件则交换 19 if (i < j) { 20 t = arr[j]; 21 arr[j] = arr[i]; 22 arr[i] = t; 23 } 24 25 } 26 //最后将基准为与i和j相等位置的数字交换 27 arr[low] = arr[i]; 28 arr[i] = temp; 29 //递归调用左半数组 30 quickSort(arr, low, j - 1); 31 //递归调用右半数组 32 quickSort(arr, j + 1, high); 33 }
【插入排序】
原理:直接插入排序是将一个待排序的记录,插入到前面已经排好序的有序序列中去,如此反复循环,直到全部排好顺序为止。
1 public void insertSort() { 2 int i, j, temp; 3 for (i = 1; i < array.length; i++) { 4 temp = array[i]; 5 for (j = i - 1; j >= 0; j--) { 6 if (temp > array[j]) { 7 break; 8 } else { 9 array[j + 1] = array[j]; 10 } 11 } 12 array[j + 1] = temp; 13 } 14 }
【选择排序】
原理:简单选择排序是每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止,属于不稳定排序。
1 public void selectSort() { 2 int i, j, index; 3 for (i = 0; i < array.length; i++) { 4 index = i; 5 for (j = i + 1; j < array.length; j++) {//遍历找到最小值 6 if (array[j] < array[index]) { 7 index = j; 8 } 9 }//将遍历出来的最小值,放在前面 10 int temp = array[i]; 11 array[i] = array[index]; 12 array[index] = temp; 13 } 14 }
参考文档:
https://baijiahao.baidu.com/s?id=1630690516749462635&wfr=spider&for=pc
https://blog.csdn.net/qq_42857603/article/details/81605124
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤