学习快速排序
来源:互联网 发布:淘宝订单编号生成规则 编辑:程序博客网 时间:2024/06/14 22:15
/** * 快速排序的思想: * 通过局部有序来实现全局有序 * @author Linchong * */public class MergeSort { public static void main(String []args){ int []arr = {9,8,7,6,5,4,3,2,1}; sort(arr); System.out.println(Arrays.toString(arr)); } public static void sort(int []arr){ int []temp = new int[arr.length];//在排序前,先建好一个长度等于原数组长度的临时数组,避免递归中频繁开辟空间 sort(arr,0,arr.length-1,temp); } private static void sort(int[] arr,int left,int right,int []temp){ if(left<right){ int mid = (left+right)/2; sort(arr,left,mid,temp);//左边归并排序,使得左子序列有序 sort(arr,mid+1,right,temp);//右边归并排序,使得右子序列有序 merge(arr,left,mid,right,temp);//将两个有序子数组合并操作 } } private static void merge(int[] arr,int left,int mid,int right,int[] temp){ int i = left;//左序列指针 int j = mid+1;//右序列指针 int t = 0;//临时数组指针 while (i<=mid && j<=right){ if(arr[i]<=arr[j]){ temp[t++] = arr[i++]; }else { temp[t++] = arr[j++]; } } while(i<=mid){//将左边剩余元素填充进temp中 temp[t++] = arr[i++]; } while(j<=right){//将右序列剩余元素填充进temp中 temp[t++] = arr[j++]; } t = 0; //将temp中的元素全部拷贝到原数组中 while(left <= right){ arr[left++] = temp[t++]; } }}
阅读全文
0 0
- 排序--快速排序学习
- 排序--快速排序学习
- 排序--快速排序学习
- 排序算法学习- 快速排序
- 交换排序:快速排序 学习
- 排序算法学习:快速排序
- 快速排序学习1
- 快速排序学习
- 学习快速排序
- 快速排序学习笔记
- 快速排序学习
- 学习笔记--快速排序
- 快速排序学习笔记
- 算法学习,快速排序
- 学习python 快速排序
- 快速排序学习
- 算法学习--快速排序
- 算法学习:快速排序
- php下使用curl进行多种数据编码方式的POST请求
- 看懂正则表达式入门
- 剑指offer之Python练习一
- angularjs之猜字游戏
- PICRUSt:预测宏基因组功能—16S扩增子分析锦上添花
- 学习快速排序
- 简单实用的OkHttp
- sqlserver中分区函数 partition by的用法
- UNIX--文件I/O函数--open、creat、close、lseek、read、write等各种函数 详解
- BZOJ 1562 浅谈匈牙利算法性质挖掘以【变换序列】即最小字典序构成
- OpenCV3_C++_Flip()翻转图片 实例
- 大疆 Manifold妙算 使用经验
- python多位数字递增批量命名
- lucene和ElasticSearch基本概念