zhuyuuyuhz
zhuyuuyuhz
2015-09-26 14:25
采纳率: 100%
浏览 1.8k
已采纳

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问题
*目前还未解决,忧伤= =。
*/

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • havedream_one
    havedream_one 2015-09-26 14:50
    已采纳

    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;
    }
    }
    }

    点赞 评论
  • Mr_dsw
    Antway_ 2015-09-26 14:54

    你的选择排序的思想不正确

    点赞 评论
  • lenovo20142018
    你我渐行渐远 2015-09-26 16:51

    for(int i=0;i<arr.length-1;++i){
    for(int j=i+1;j<arr.length;++j)
    还有就是判断I=J时该如何处理,

                        排序的问题在纸上多试一下,想清楚再写代码
                        希望对你有帮助
    
    点赞 评论
  • NoMasp
    nomasp 2015-09-27 00:52

    多调试,在纸上写写过程

    点赞 评论
  • qq_24727109
    小C的假期 2015-09-27 08:53

    swap(arr,i,j)吧?

    点赞 评论

相关推荐