本帖最后由 王瀛 于 2013-5-27 11:10 编辑
- class Sort
- {
- public static void main(String[] args)
- {
- int[] arr = new int[]{90,46,57,31,48,70};//定义整形实例化数组(乱序)
- System.out.print("排序前的数组为:");
- printArray(arr);//排序前打印
- selectSort(arr);//调用选择排序
- System.out.print("排序后的数组为:");
- printArray(arr);//排序后打印
- }
-
- private static void swap(int[] arr,int a,int b)//"换位置"方法,这里定义传入参数是局部变量,局部变量随着方法的调用,而在栈内存中分配空间,一旦方法调用结束,局部变量就被释放。如果仅定义int ah和int b,相当于两个数在内存中换了下位置,然后又消失了,与你想要进行的数组中元素的交换没有任何联系。所以这里除了要定义a,b外,还需要定义数组
- {
- int temp;//定义临时存储的"格子"
- temp = arr[a];
- arr[a] = arr[b];
- arr[b] = temp;
- }
- private static void printArray(int arr[])//遍历数组方法
- {
- System.out.print("[");
- for (int x=0;x<arr.length ;x++ )
- {
- if (x!=arr.length-1)
- System.out.print(arr[x]+",");
- else
- System.out.println(arr[x]+"]");
- }
- }
- public static void selectSort(int[] arr)//选择排序法
- {
- for (int x=0;x<arr.length-1 ;x++ )//防止角标越界,所以是arr.length-1
- {
- for (int y=x+1;y<arr.length ;y++ )
- {
- if (arr[x]>arr[y])
- {
- swap(arr,x,y);
- }
- }
- }
- }
- }
复制代码 解释在注释中了 |