标签:15 nums int high 快排 num low 数组 排序
排序数组
给定一个整数数组 nums
,将该数组升序排列。
示例 1:
输入:[5,2,3,1] 输出:[1,2,3,5]
示例 2:
输入:[5,1,1,2,0,0] 输出:[0,0,1,1,2,5]
提示:
1 <= A.length <= 10000
-50000 <= A[i] <= 50000
1 class Solution { 2 public: 3 int LOW;//原始数组的左边界 4 int HIGH;//原始数组的右边界 5 vector<int> num;//原始数组复制后用来操作的新数组 6 int Partition(int low,int high){//寻找分界线下标 7 int temp = num[low];//在原始数组中随机取一个数出来,留出一个空位置 8 while(low < high){ 9 while(low<high&&num[high] >= temp)//右边的数要大于等于原来空位置上的数则,右边界左移 10 --high; 11 num[low] = num[high];//把右边第一个小于那个原来空位置上的数放到空位置上去,腾出了一个新的空位置 12 while(low<high&&num[low] <= temp)//左边的数要小于等于原来空位置上的数则,左边界右移 13 ++low; 14 num[high] = num[low];//把左边第一个大于那个原来空位置上的数放到新的空位置上去,腾出了一个新的空位置 15 }//此时,以low下标为分界线,low的左边的数都比随机取出的数temp要小,low的右边的数都比随机取出来的数temp要大 16 num[low] = temp;//把随机取出来的数放到分界线下标的空位置上去 17 return low;//返回分解线的下标 18 } 19 void quickSort(int low,int high) { 20 if(low < high){ 21 int key = Partition(low,high);//将数组分为两部分
22 quickSort(low,key - 1);//将前半部分再进行快排 23 quickSort(key + 1,high);//将后半部分再进行快排 24 } 25 } 26 vector<int> sortArray(vector<int>& nums) {//入口函数 27 LOW = 0; 28 HIGH = nums.size() - 1; 29 num = nums; 30 quickSort(LOW,HIGH); 31 return num; 32 } 33 };
标签:15,nums,int,high,快排,num,low,数组,排序 来源: https://www.cnblogs.com/qinqin-me/p/12535994.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。