public class Hello{
public static void main(String[] args) {
int[] arr={24,69,80,57,13};
int temp=0;//用于辅助交换
for (int j=0;j<4 ;j++ ) {//比较4次
//如果前面的数》后面的数就交换
if (arr[j]>arr[j+1]) {
temp=arr[j];//取大的
arr[j]=arr[j+1];//把小的往前面排
arr[j+1]=temp;//现在temp就是大的数字,往后排
}
}
System.out.print("第一轮=="+"\n");
for (int j=0;j<arr.length ;j++ ) {
System.out.print(arr[j]+"\t");
}
for (int j=0;j<3 ;j++ ) {//比较3次因为最大的数字已经被调到后面了
//现在是第二大的数字
//如果前面的数》后面的数就交换
if (arr[j]>arr[j+1]) {
temp=arr[j];//取大的
arr[j]=arr[j+1];//把小的往前面排
arr[j+1]=temp;//现在temp就是大的数字,往后排
}
}
System.out.print('\n'+"第二轮==");
for (int j=0;j<arr.length ;j++ ) {
System.out.print(arr[j]+"\t");
}
for (int j=0;j<2 ;j++ ) {//比较2次因为第二大的数字已经被调到后面了
//现在是第二大的数字
//如果前面的数》后面的数就交换
if (arr[j]>arr[j+1]) {
temp=arr[j];//取大的
arr[j]=arr[j+1];//把小的往前面排
arr[j+1]=temp;//现在temp就是大的数字,往后排
}
}
System.out.print('\n'+"第三轮==");
for (int j=0;j<arr.length ;j++ ) {
System.out.print(arr[j]+"\t");
}
for (int j=0;j<1 ;j++ ) {//比较1次因为三大的数字已经被调到后面了
//现在是第二大的数字
//如果前面的数》后面的数就交换
if (arr[j]>arr[j+1]) {
temp=arr[j];//取大的
arr[j]=arr[j+1];//把小的往前面排
arr[j+1]=temp;//现在temp就是大的数字,往后排
}
}
System.out.print('\n'+"第四轮==");
for (int j=0;j<arr.length ;j++ ) {
System.out.print(arr[j]+"\t");
}
}
}
思路一
一 将每个数字进行比较,把最大的数字放在最后。
二 然后再进行一轮比较,将第二的数字放在最后(这个最后是去除了第一轮最大数字的)
结果
D:\Store files\Job saving\java_store>java.exe Hello.java
第一轮==24 69 57 13 80 第二轮==24 57 13 69 80 第三轮==24 13
57 69 80 第四轮==13 24 57 69 80
D:\Store files\Job saving\java_store>javac Hello.java
D:\Store files\Job saving\java_store>java.exe Hello.java
第一轮==
24 69 57 13 80 第二轮==
24 57 13 69 80 第三轮==
24 13 57 69 80 第四轮==
13 24 57 69 80
D:\Store files\Job saving\java_store>javac Hello.java
D:\Store files\Job saving\java_store>java.exe Hello.java
第一轮==
24 69 57 13 80
第二轮==24 57 13 69 80
第三轮==24 13 57 69 80
第四轮==13 24 57 69 80
D:\Store files\Job saving\java_store>
思路二:不重复写三轮而是用for语句
public class Hello{
public static void main(String[] args) {
int[] arr={24,69,80,57,13};
int temp=0;//用于辅助交换
for (int i=0;i<arr.length-1 ;i++ ){ //外层进行循环4次
for (int j=0;j<arr.length-1-i ;j++ ) {//比较
//如果前面的数》后面的数就交换
if (arr[j]>arr[j+1]) {
temp=arr[j];//取大的
arr[j]=arr[j+1];//把小的往前面排
arr[j+1]=temp;//现在temp就是大的数字,往后排
}
}
System.out.print("第一轮=="+"\n");
for (int j=0;j<arr.length ;j++ ) {
System.out.print(arr[j]+"\t");
}
}
}
}
要点就在下面的。
for (int i=0;i<arr.length-1 ;i++ ){ //外层进行循环4次
for (int j=0;j<arr.length-1-i ;j++ ) {//比较
结果仍为
D:\Store files\Job saving\java_store>java.exe Hello.java
第一轮==
24 69 57 13 80 第一轮==
24 57 13 69 80 第一轮==
24 13 57 69 80 第一轮==
13 24 57 69 80
D:\Store files\Job saving\java_store>