算法与数据结构-04-排序算法
2023-03-20 14:48:14 时间
冒泡排序(大小相邻比较,交换):
1 package sgq0321; 2 3 import java.util.Arrays; 4 5 public class BubbleSort { 6 7 public static void main(String[] args) { 8 BubbleSort bubbleSort = new BubbleSort(); 9 System.out.println(Arrays.toString(bubbleSort.bubble(new int[]{9, 3, 1}))); 10 } 11 12 public int[] bubble(int[] arr) { 13 for (int i = 0; i < arr.length - 1; i++) { 14 boolean flag = true; 15 for (int j = 0; j < arr.length - i - 1; j++) { 16 if (arr[j] > arr[j + 1]) { 17 flag = false; 18 int temp = arr[j + 1]; 19 arr[j + 1] = arr[j]; 20 arr[j] = temp; 21 } 22 } 23 if (flag) { 24 return arr; 25 } 26 } 27 return arr; 28 } 29 }选择排序(默认排头最小值,后续有更小值进行交换):
package sgq0321; import java.util.Arrays; public class SelectSort { public static void main(String[] args) { SelectSort bubbleSort = new SelectSort(); System.out.println(Arrays.toString(bubbleSort.select(new int[]{9, 3, 1}))); } public int[] select(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { int min = i; int minValue = arr[i]; for (int j = i; j < arr.length; j++) { if (arr[j] < minValue) { minValue = arr[j]; min = j; } } if (min == i) continue; arr[min] = arr[i]; arr[i] = minValue; } return arr; } }插入排序(原数组分前后两段,前有序后无序,后依次取值插入前合适位置):
package sgq0321; import java.util.Arrays; public class InsertSort { public static void main(String[] args) { InsertSort bubbleSort = new InsertSort(); System.out.println(Arrays.toString(bubbleSort.insert(new int[]{5,9, 3, 1}))); } public int[] insert(int[] arr) { for (int i = 1; i < arr.length; i++) { // index of the position to be inserted int insertIndex=i-1; // the value of the current index location int currentValue=arr[i]; // if currentValue < the sequence has been shot while(insertIndex>=0 && currentValue<arr[insertIndex]){ // 前面的值后移 arr[insertIndex+1]=arr[insertIndex]; insertIndex--; } arr[insertIndex+1]=currentValue; } return arr; } }快速排序
package sgq0321; import java.util.Arrays; public class QuickSort { public static void main(String[] args) { QuickSort bubbleSort = new QuickSort(); int[] ints = {8, 9, 1, 7, 2, 3, 5, 4, 6, 0}; bubbleSort.quick(ints, 0, ints.length - 1); System.out.println(Arrays.toString(ints)); } public void quick(int[] arr, int left, int right) { int l = left; int r = right; int pivot = arr[(l + r) / 2]; while (l < r) { while (arr[l]<pivot){ l++; } while (arr[r]>pivot){ r--; } if(l>r){ break; } int temp=arr[l]; arr[l]=arr[r]; arr[r]=temp; r--; l++; } if(left<r){ quick(arr,left,r); } if(l<right){ quick(arr,l,right); } } }
相关文章
- 数据分析师必备的9大技能,大多数人只知道一半
- 分布式及高可用元数据采集原理
- 记一次生产环境SQL Server服务器卡顿问题解决--内存分配不当
- 如何用Excel快速生成SQL语句,用起来真的很爽
- 微服务架构下,利用Sharding-jdbc解决读写分离查询延迟问题
- 当同事用Root权限输入rm -rf 后,鬼知道我经历了什么
- Linux搜索文件的5个高效命令的正确使用方法
- 极简操作!3分钟即可实现的 IIS 站点迁移
- 超越Cookie:当今的客户端数据存储技术
- Hadoop与 Spark - 选择正确的大数据框架
- Linux性能测试工具有什么好用的工具,这里推荐一款
- 如何将Hadoop集成到工作流程中?这6个优秀实践必看
- 太快太不安全:为Mongo Express Web管理界面保驾护航
- 怎样在Kubernetes上运行PostgreSQL
- NoSQL中负载均衡系统如何解决热点问题,提高可用性?
- 服务器部署前端&Node 项目(包括阿里云服务器、nginx 以及 mongoDB 的配置)
- 日均5亿查询量的京东到家订单中心,为什么舍MySQL用ES?
- 如何在MySQL 8中重置root密码
- 浅谈SQL Server内部运行机制
- MySQL8.0里GROUP BY有变化,注意了