(用JAVA语言)编写一个程序用选择法对数组a[]={20,10,50,40,30,70,60,80,90,100}进行由大到小的排序。

希望有详细的注释帮助我读懂整个小程序,越详细越好,谢谢各位朋友了!

public class Demo {
public static void main(String args[]) {
int arr[] = {20,10,50,40,30,70,60,80,90,100};
System.out.println("数组由大到小排序前:");
for(int num : arr) {
System.out.print(num + "、");
}
//使用冒泡排序法,将数组由大到小进行排序
for(int i = 0;i < arr.length-1;i++) {
for(int j = 0;j < arr.length-i-1;j++) {
int temp = arr[j];
if(temp < arr[j+1]) {
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
System.out.println("\n数组由大到小排序后:");
for(int num : arr) {
System.out.print(num + "、");
}
}
} 这个行么?
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-27
public class wan {

/**
* @param args
*/
public static void main(String[] args) {
/*选择排序
思路:
1.定义一个循环,控制要排列的次数,每次搞定一个最大数
假设用i来代表每次最大数摆放的位置,i的取值:0~length-2
2.定义一个变量pos记住最大数所在的位置,定义一个变量max记住最大数
max初始值为i位置的元素,pos初始值为i
3.定义一个内层循环,用于遍历数组找最大数
假设i位置的最大,找出i+1~length-1里面最大的比i还大的
遍历数组,如果有比max大的,将值给max,同时用pos记住该元素的角标
4.让最大数和i位置的元素交换
*/
int[] arr = {20,10,55,40,30,70,60,80,90,100};
System.out.println("排序前:");
listArr(arr);
System.out.println("排序后:");
sort(arr);
listArr(arr);
}

private static void sort(int[] arr) {
for(int i=0; i<arr.length-1; i++){
int pos = i;
int max = arr[i];

for(int j=i+1; j<arr.length; j++){
if(arr[j]>max)
{
max = arr[j];
pos = j;
}
}
exchange(arr, i, pos);
}
}

private static void exchange(int[] arr, int pos1, int pos2) {
int temp = arr[pos1];
arr[pos1] = arr[pos2];
arr[pos2] = temp;

}
static void listArr(int[] arr){
StringBuffer sb = new StringBuffer();
for(int i=0; i<arr.length; i++)
sb.append(arr[i] + ",");
sb.delete(sb.length()-1, sb.length());
System.out.println(sb);
}

}
第2个回答  2013-12-28
import java.util.Arrays;

public class Sort {
public static void main(String[] args) {
int a[] = { 20, 10, 50, 40, 30, 70, 60, 80, 90, 100 };
Arrays.sort(a);
System.out.println(Arrays.toString(a));
}
}
相似回答