冒泡排序(优先确定最大的数)
数组间,两两比较,进行交换
例如:
先定义一个数组 int[] arr = {5,6,4,3}
冒泡排序是两两比较,大的往后移动,也就是从小到大排序。
1)先是索引为0的先开始比较,即5跟6比较,5没6大,不移动,若不移动,则下个索引位上的数开始比较,即6跟后面的4比较,6比4大,交换位置,数组就变成了{5,4,6,3},继续6再跟3比较,6比3大,再交换位置,数组就变成了{5,4,3,6}
2)继续开始比较,也就是5开始跟后面的比较,5比4大,5跟4交换位置数组就变成了{4,5,3,6},同理,5跟3比较,大,交换位置,数组就变成了{4,3,5,6}
3)最后一轮开始比较,4跟3比,4比3大,位置交换。
//定义数组
int[] arr = {5,6,4,3};
//遍历
for (int x = 0; x < arr.length - 1; x++) {
//arr.length-1是为了控制循环次数,n个元素循环n-1次
for (int y = 0; y < arr.length-x-1; y++) {
//冒泡是把每轮循环中较大的数飘到后面,且数组的下标从0开始的,x下标后面已经排序的个数就得多减1,总结就是x增多少,y的循环位置减多少
if (arr[y]>arr[y+1]){
//换位置
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
//打印结果
System.out.println(Arrays.toString(arr));
选择排序(先把最小的数找出来)
选中某元素,其位置后面的元素,依次跟这个位置上的元素比较,并交换
//定义数组
int[] arr = {5,6,4,3};
//遍历
for (int x = 0; x < arr.length - 1; x++) {
//arr.length-1是为了控制循环次数,n个元素循环n-1次
//不能循环n次是因为最后一个元素不会跟自己相比较
for (int y = x+1; y < arr.length; y++) {// 找出最小值得元素下标
if (arr[x]>arr[y]){
//换位置
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
//打印结果
System.out.println(Arrays.toString(arr));
}