选择排序

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,
然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。.
以此类推,直到所有元素均排序完毕。
注:此方法直接对堆内存进行操作,故效率不高!

 1     static void selectSort(int[] arr)
 2     {
 3         System.out.println(Arrays.toString(arr));
 4         for (int i = 0; i < arr.length; i++)
 5         {
 6             for (int j = i + 1; j < arr.length; j++)
 7             {
 8                 if (arr[j] < arr[i])
 9                 {
10                     arr[i] = arr[i] ^ arr[j];
11                     arr[j] = arr[i] ^ arr[j];
12                     arr[i] = arr[i] ^ arr[j];
13                 }
14             }
15         }
16         System.out.println(Arrays.toString(arr));
17     }

改进选择排序方法,不对堆内存操作,改变栈内存中的索引值,提高效率

 1     static void selectSort2(int arr[])
 2     {
 3         System.out.println(Arrays.toString(arr));
 4         int min;
 5         for (int i = 0; i < arr.length; i++)
 6         {
 7             min = i;
 8             for (int j = i + 1; j < arr.length; j++)
 9             {
10                 if (arr[j] < arr[min])
11                 {
12                     min = j;
13                 }
14             }
15             if (min != i)
16             {
17                 int tt = arr[i];
18                 arr[i] = arr[min];
19                 arr[min] = tt;
20             }
21         }
22         System.out.println(Arrays.toString(arr));
23     }

 

posted @ 2014-01-02 19:45  一路向北中  阅读(167)  评论(0)    收藏  举报