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;
}
}
}
你的选择排序的思想不正确
for(int i=0;i<arr.length-1;++i){
for(int j=i+1;j<arr.length;++j)
还有就是判断I=J时该如何处理,
排序的问题在纸上多试一下,想清楚再写代码
希望对你有帮助
多调试,在纸上写写过程
swap(arr,i,j)吧?