程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> string-java選擇排序使用swap()函數出現數組越界報錯

string-java選擇排序使用swap()函數出現數組越界報錯

編輯:編程綜合問答
java選擇排序使用swap()函數出現數組越界報錯
 class SelectSort{
    public static void Swap(int[] arr,int i,int j){
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    public static void PrintArray(int[] Array){
        for(int i=0;i<Array.length;i++){
            System.out.print(" "+Array[i]);
        }
    }

    public static void SelectSort(int[] arr){
        for(int i=0;i<arr.length-1;i++){
            for(int j=i+1;j<arr.length;j++){
                if(arr[i]>arr[j]){                  
                    Swap(arr,arr[i],arr[j]);
                }               
            }
        }
    }

    public static void main(String[] args){
        int[] arr = {9,2,8,13,22,1};
        SelectSort(arr);
        PrintArray(arr);
    }   
}

/**
*@author 2015-09-26
*function:選擇排序的練習和java中引用類型的用法
*問題:使用Swap()函數的時候,就會出現java.lang.ArrayIndexOutOfBoundsException問題
*目前還未解決,憂傷= =。
*/

最佳回答:


Swap(arr,i,j);

在有你的選擇排序思想用的不對
(1):將序列分成有序區和無序區,初始時有序區為空,無序區包括全部元素
(2):每次從無序區中選擇最小的元素將其與無序區第一個元素進行交換
(3):重復(2),直到無序區沒有元素
public static void selectSort(int[] arr){
int tmp = 0;
int index = 0;
for(int i = 0 ; i < arr.length ; i ++){
index = i;
//查找[i...length]中的最小值
for(int j = i + 1; j < arr.length; j ++){
if(arr[index] > arr[j]){
index = j;
}
}
//最小元素不是本身
if(index != i){
tmp = arr[index];
arr[index] = arr[i];
arr[i] = tmp;
}
}
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved