Java小练习——冒泡排序
题目描述
定义一个长度为9的数组;
输入9个数字,进行冒泡排序, 使其按照从小到大的顺序排列, 并将排列后的结果输出。
思路
首先我们应明确冒泡排序的基本思路,即对每个相邻的元素进行比较,若顺序错误则进行交换。
例如数组 5,0,3,1,2
第一次循环我们对第一位与第二位进行比较,我们进行第一次循环时,第一位的5大于第二位的0,所以进行交换,因而数组变成了0,5,3,1,2
接着我们再进行第二次循环,对第二为数字与第三位数字进行比较,这里需要注意的是,此时的第二位数字为5,因而我们进行的是5与3的比较,很明显5大于3,所以数组变成了0,3,5,1,2
接着进行两次循环以后,数组就变成了0,3,1,2,5
以上便是代表着第一次大循环的完成
接着我们便可以进行第二次大循环,步骤与第一次大循环一致,即先对比第一位与第二位,若排序错误则换位置,若无错误则接着进行
最终我们便可以得到排过序的数组。
那么我们就应该说代码的实现了。
首先,我们因明确我们要使用for循环结构进行作答。
然后就是确定循环的次数了
我们先来确认小循环的次数,还是拿上面的例子来打比方,第一位与第二位,第二位与第三位,第三位与第四位,第四位与第五位,小循环结束。循环次数为4
第二次小循环时,第一位与第二位,第二位与第三位,第三位与第四位,需要注意的是,此时第五位是最大的,不需要再替换,所以循环次数为3次
那么我们就可以知道,小循环次数其实就是数组元素的个数-大循环次数-1。
接着同样的方法我们可以得出大循环的次数同样为循环元素个数-1。
接着我们需要知道如何进行交换,若直接进行赋值则会导致原来数值被覆盖,那么我们可以定义一个变量temp作为中间量。
搞定了这些,相信代码很轻松就可以写出来了!
代码
package Test;
import java.util.Scanner;
public class Test6 {
public static void main(String[] args) {
Scanner sc = new Scanner(system.in);
int [] array = new int[9]; //定义数组
//通过循环向数组中插入数字
for (int i = 0; i < array.length; i++) {
array[i] = sc.nextInt();
}package Test;
import java.util.Scanner;
public class Test6 {
public static void main(String[] args) {
Scanner sc = new Scanner(system.in);
int [] array = new int[9]; //定义数组
//通过循环向数组中插入数字
for (int i = 0; i < array.length; i++) {
array[i] = sc.nextInt();
}
//嵌套循环实现冒泡排序
for (int i = 0; i < array.length - 1; i++) {
for(int j = 0;j<array.length - 1 - i;j++){
if(array[j]>array[j + 1]){
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
//通过循环进行输出
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
}
//嵌套循环实现冒泡排序
for (int i = 0; i < array.length - 1; i++) {
for(int j = =0;j<array.length - 1 - i;j++){
if(array[i]>array[j]){
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
//通过循环进行输出
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
}
运行结果