【Java学习】相关基础算法
冒泡排序
原理:比较两个相邻的元素,将值大的元素交换至右端,然后在剩下数中比较两个相邻的元素,将值大的元素交换到剩下数的右端,直到所有的数排好序。
思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。
N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N-i)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数。
冒泡排序的优点:每进行一趟排序,就会少比较一次,因为每进行一趟排序都会找出一个较大值。如上例:第一趟比较之后,排在最后的一个数一定是最大的一个数,第二趟排序的时候,只需要比较除了最后一个数以外的其他的数,同样也能找出一个最大的数排在参与第二趟比较的数后面,第三趟比较的时候,只需要比较除了最后两个数以外的其他的数,以此类推……也就是说,没进行一趟比较,每一趟少比较一次,一定程度上减少了算法的量。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
public static void main(String[] args) { int array[] = { 6 , 3 , 8 , 2 , 9 , 1 }; for ( int i= 0 ;i<array.length;i++) { for ( int j= 0 ;j<array.length- 1 -i;j++) {<br> if (array[j] > array[j+ 1 ]) { int temp; temp = array[j+ 1 ]; array[j+ 1 ] = array[j]; array[j] = temp; } } } for ( int x:array){ System.out.println(x); } }
|
选择排序
原理:找到一个最小数交换到最前面,然后剩下数中找到最小数交换到剩下数最前面,一直重复此步骤,知道所有数排好
1 public int[] selectSortArray(int[] arr){ 2 //选择排序 原理:找到最小数交换到最前面 3 int n = arr.length; 4 for (int i = 0; i < n-1; i++) { 5 int min_index = i; 6 for (int j = i+1; j < n; j++) { 7 if (arr[j] < arr[min_index]) { 8 min_index = j; 9 } 10 if (i != min_index) { 11 int temp = arr[i]; 12 arr[i] = arr[min_index]; 13 arr[min_index] = temp; 14 15 } 16 } 17 } 18 return arr; 19 }
作者:gtea
博客地址:https://www.cnblogs.com/gtea
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!