題目:使用直接排序法將下列數組(從小到大排序)
思路:第一次:使用索引值為0的元素與其他位置的元素挨個比較一次,如果發現比0號索引值的元素小的,那么交換位置,第一輪下來最小值被放在了第一位
第二次:將索引值為1的元素與其他位置的元素挨個比較一次,如果發現比1號索引值的元素小的,那么交換位置,第二輪下來第二小的值被放在了第二位
...這樣依次循環比較n-1次,實現有小到大的排序操作
1 public class Choosesort { 2 public static void main(String[] args) { 3 int[] arr=new int[]{12,5,17,8,9}; 4 //排序前的數組 5 System.out.println("排序前的數組元素為:"); 6 for (int i = 0; i <arr.length ; i++) { 7 System.out.print(arr[i]+" "); 8 } 9 //選擇排序法(將最小的依次選擇出來放在合適的位置上) 10 for (int i = 0; i <arr.length-1 ; i++) {//控制排序的輪數,輪數等于arr.length-1 11 //下面這個for循環執行一次,就會把最小值放在第一位,執行兩次就會把第二小的值放在第二位,這樣依次實現排序 12 for (int j = i+1; j <arr.length ; j++) { 13 if(arr[i]>arr[j]){ 14 arr[i]=arr[i]+arr[j]; 15 arr[j]=arr[i]-arr[j]; 16 arr[i]=arr[i]-arr[j]; 17 } 18 19 } 20 } 21 22 //輸出拍好序之后的數組 23 System.out.println(); 24 System.out.println("排好序之后的數組元素為:"); 25 for (int i = 0; i <arr.length ; i++) { 26 System.out.print(arr[i]+" "); 27 } 28 } 29 } 30 /*運行結果 31 排序前的數組元素為: 32 12 5 17 8 9 33 排好序之后的數組元素為: 34 5 8 9 12 17 35 */
?