本帖最后由 刚金波 于 2013-4-17 00:03 编辑
刚看视频时讲冒泡排序的优化问题,原本冒泡排序是将存放在堆内存中的数组元素的位置进行调换来完成排序,老师说堆内存中数据的调换会使用较多的资源,如果每次只在最后将这次排序的最大值取出与数组最后一位的值交换位置就可以优化冒泡排序。这块听着有些迷糊,哪位同学能帮忙给详细解释下- public static void bubbleSort_1(int[]arr)
- {
- int temp=arr.length;
- for(int x=0;x<temp;x++)
- {
- for(int y=x;y<temp-1;y++)
- {
- if(arr[y]>arr[y+1])
- {
- int num=arr[temp-y];
- arr[temp-y]=arr[y];
- arr[y]=arr[temp-y];
- }
- }
- }
- printArr(arr);
- }
复制代码 上面是我自己写的优化后的冒泡排序的实现代码。
我是这么想的,每次外部循环一次,内部循环就就从数组中获取一个最大值并与数组最后一位交换位置,从而避免相邻两个数组之间的调换。
不知道这样做对不对,哪位给看看,给个意见 |