java算法 — 数组的简单排序
下面讲解 冒泡法 和 选择法排序,,,忽略掉插入法排序,因为插入法排序和冒泡差不多且不好理解。
1.冒泡法,这个是最基本的排序算法,不说那么多 ,直接上源码:

package ch01; import java.util.Scanner; /** * 冒泡法排序 */ public class Bubbling { public static void main(String[] args) { Scanner sc = new Scanner(System.in); long[] arr = new long[10]; for (int i = 0; i < arr.length; i++) { arr[i] = sc.nextLong(); } sort(arr); for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } /** * 冒泡 - 尾部往前冒。 * @param arr */ public static void sort(long[] arr) { long t = 0; for(int i = 0;i < arr.length - 1; i++){ for (int j = arr.length - 1;j > i; j--){ if (arr[j] < arr[j - 1]){ //交换 t = arr[j]; arr[j] = arr[j-1]; arr[j-1] = t; } } } } }
2.选择法排序是有 i j k ,,其中i 做外循环,j是 内循环变量, k 是标识,总是指向 最小(大) 的值。
源码:

package ch01; /** * 选择排序法 * 比 冒泡排序 交换的次数少 因此效率比冒泡高那么一点 */ public class Select { public static void main(String[] args) { long[] arr = {3, 7, 5, 8, 4, 2, 1, 6, 9, 10}; //10个数据 sort(arr); for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } public static void sort(long[] arr) { int k = 0; long temp = 0L; for (int i = 0; i < arr.length - 1; i++) { //外循环初始 k = i k = i; // 【j = i + 1】 少比较 1 次 for (int j = i + 1; j < arr.length; j++) { /** * 是在不懂请打开这个注释!! * System.out.println("arr[i]" + arr[i]); * System.out.println("arr[j]" + arr[j]); * System.out.println("arr[k]" + arr[k]); * System.out.println("=================="); */ //j是会变的 if (arr[j] < arr[k]) { //那么k指向的是最小的值 k = j; } } //内循环结束 - 交换最小值 temp = arr[i]; arr[i] = arr[k]; arr[k] = temp; } } }
实在看不懂打开里面的注释即可。
本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/15529019.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!