冒泡排序
冒泡排序原理:比较相邻的元素,较小的放到前面,较大的放到后面
要理解冒泡排序首先要理解两个元素互换
例如
int a = 10;
int b = 20;
如何才能让a = 20;b = 10;如下代码是不能实现的
int a = 10;
int b = 20;
a = b;//首先b = 20;然后把b的值赋值给a,所以a = 20;
b = a;//这是a = 20; 然后把a的值20赋值给b。这个时候b的值也是20
思考:如果家里有两个瓶子,1号瓶子装水,2号瓶子装油,那么如何才能让1号瓶子装油,2号瓶子装水
解答:再找一个3号空瓶子,首先把1号瓶子的水倒入3号瓶子,把2号瓶子的油倒入1号瓶子,最后吧3号瓶子的水倒入2号瓶子;这样是不是就完成了互换了
所以
int a = 10;
int b = 20;
int c;
c = a;
a = b;
b = c
-冒泡排序的每一次内层循环都会找到最小值
/**
* 冒泡排序
* @param args
*
* 6,2,4,1,5,9
* 第一次排序:
* 2,4,1,5,6,9 5
* 1 5
* 二次
* 2,1,4,5,6, 9 4
*
* 2 4
* 三次
* 1,2,4,5 3
* 3 3
*
* 4 3
*
* 五次
* 5 1
*
*
* 第一次排序:结果就是找到最大值
* 2 第2
* 3 3
* ……
* 5 5
*
*
*
* 5,4,3,2,1
* 1
* 4,3,2,1,5
*
* 2
* 3,2,1,4,5
*
* 3
* 2,1,3,4,5
*
* 4
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] arr = new int[]{5,4,3,2,1};
// 外层循环是排序的次数 (i+1)
for(int i = 0; i < arr.length - 1; i ++){
//内层循环,相当于排序一次
// j = 0 j =4 j < 5
for(int j = 0; j < arr.length - 1 - i; j ++){
// 实现的就是相邻元素进行比较,大的放到后面,小的放到前面
if(arr[j] > arr[j+1]){
// 交换位置
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for(int i = 0; i < arr.length; i ++){
System.out.print(arr[i]+"\t");
}
}
选择排序
选择排序的基本思想是将指定的排序位置与其他数组元素分别对比,如果满足条件就交换元素值
public static void main(String[] args){
int arr[] = {6,5,4,3,2,1,0};
/**
* 第一次拿下标为0的和后面的元素依次进行比较
* 1,6,5,2,4,9
*
* 继续拿下标为1
* 1 ,2,6,5
*
* 继续拿下标为2
*
* 继续拿下标为4 = arr.length -2
*/
for(int i = 0; i < arr.length - 1; i ++){
for(int j = i + 1; j < arr.length; j ++){
if(arr[i] > arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
/**
* 数组名[下标]
*/
for(int i=0;i<arr.length; i++){
System.out.print(arr[i]+"\t");
}
如果明白了,请赞赏,1分也是爱。
如果还是不理解,看来需要视频讲解以及面对面一对一讲解了(视频+源码 5元)
联系方式QQ:1718202383
可接应届毕业生论文项目
可接外包项目
image.png
网友评论