Java黑皮书课后题第7章:*7.20(修改选择排序法)在7.11节中,使用了选择排序法对数组排序。改写7.11节程序,重复地在当前数组中找到最大值,然后将这个最大值与该数组中的最后一个数进行交换
生活随笔
收集整理的這篇文章主要介紹了
Java黑皮书课后题第7章:*7.20(修改选择排序法)在7.11节中,使用了选择排序法对数组排序。改写7.11节程序,重复地在当前数组中找到最大值,然后将这个最大值与该数组中的最后一个数进行交换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
7.20(修改選擇排序法)在7.11節中,使用了選擇排序法對數組排序。改寫7.11節程序,重復地在當前數組中找到最大值,然后將這個最大值與該數組中的最后一個數進行交換
- 題目
- 題目描述
- 破題
- 代碼
- 運行實例
題目
題目描述
7.20(修改選擇排序法)在7.11節中,使用了選擇排序法對數組排序。改寫7.11節程序,重復地在當前數組中找到最大值,然后將這個最大值與該數組中的最后一個數進行交換
編寫一個測試程序,讀取10個double型的數字,調用該方法,并顯示排好序的數字
破題
代碼
import java.util.Arrays; import java.util.Scanner;public class Test7_20 {public static void main(String[] args) {//1. 主方法:聲明一個int型對象,賦值為10(作為數組長度)int length = 10;//2. 主方法:聲明一個double型數組double[] list = new double[length];//3. 主方法:獲取輸入的10個double值,并傳值給數組Scanner input = new Scanner(System.in);System.out.print("請輸入10個double值:");for (int i = 0 ; i < length ; i++){list[i] = input.nextDouble();}//4. 主方法:調用自定義選擇排序法(方法名:ss),接收返回的double型數組list = ss(list);//5. 主方法:將剛剛接收到的數組輸出System.out.print(Arrays.toString(list));}//ss方法:選擇排序的自定義方法public static double[] ss(double[] list){//6. ss方法:求傳入數組的長度int length = list.length;//7. ss方法:聲明2個對象,用于存儲交換值double temp = 0;int temp_index = 0;//8. ss方法:采用雙層循環進行排序,最內層進行比較大小,并進行值的交換for (int i = length - 1 ; i > 0 ; i--){//找下標0到i的最大值下標temp_index = max(list, i);//比較list[temp_index]和list[i]的大小,如果大于則交換值if (list[temp_index] > list[i]){temp = list[temp_index];list[temp_index] = list[i];list[i] = temp;}}//9. ss方法:返回排序好的數組return list;}public static int max(double[] list, int i){//找傳入的double數組從下標0到下標i的最大值int index = 0;double max = 0;for (int a = 0 ; a < i ; a++){if (max < list[a]){max = list[a];index = a;}}return index;} }運行實例
請輸入10個double值:10 9 8 7 6 5 4 3 2 1 [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]總結
以上是生活随笔為你收集整理的Java黑皮书课后题第7章:*7.20(修改选择排序法)在7.11节中,使用了选择排序法对数组排序。改写7.11节程序,重复地在当前数组中找到最大值,然后将这个最大值与该数组中的最后一个数进行交换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java黑皮书课后题第7章:**7.19
- 下一篇: Java黑皮书课后题第7章:*7.21(