例如数组中有几个数据
12,4,5,78,90,1
排序:升序 : 1,4,5,12,78,90
升序:谁大谁在右边
第一轮:12,4,5,78,90
第一次: 12 > 4? -》 如果左边的数据大于右边的:交换位置 -》 4,12,5,78,90,1
第二次: 12 > 5? ->交换位置 -》 4,5,12,78,90,1
第三次: 12 > 78? ->不用交换位置 -》 4,5,12,78,90,1
第四次:78 > 90? ->不用交换位置 -》 4,5,12,78,90,1
第五次:90>1? ->交换 -》 4,5,12,78,1,90
经过第一轮的比较,确定科最大值 90,去到了最右边
第二轮: 4,5,12,78,1,90
第一次: 4>5? ->不用交换位置
第二次: 5 >12? ->不用交换位置
第三次: 12 > 78? ->不用交换位置
第四次:78 > 1? -》交换 4,5,12,1,78,90
每一轮的次都会减少一次,因为上一轮已经确定一个值,因此该轮就少比一次
第三轮:4,5,12,1,78,90
第一次: 4>5? ->不用交换位置
第二次: 5 >12? ->不用交换位置
第三次: 12 > 1? ->交换位置-> 4,5,1,12,78,90
第四轮:4,5,1,12,78,90
第一次: 4>5? ->不用交换位置
第二次: 5 >1? ->交换位置-》 4,1,5,12,78,90
第五轮: 4,1,5,12,78,90
第一次: 4>1? ->交换位置 -》 1,4,5,12,78,90
在重复比较 -》 循环
轮数-》外层 -》循环次数 -》 总数-1
总数:6个数据 -》5轮:因为最有一轮一次确定了两个
次数-》内层-》循环次数 -》总数-当前的轮数
1-》5
2-》4
3-》3
4-》2
public static void main(String[] args) {
int[] nums = {12,4,5,78,90,1};
//外层for控制轮数
for (int i = 0; i < nums.length-1; i++) {
//内层for控制次数
for (int j = 0; j < nums.length-i-1; j++) {
//比大小
if (nums[j]>nums[j+1]) {
//做交换位置的中间数保存变量
int temp = 0;
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
//输出
System.out.println(Arrays.toString(nums));
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)