整数排序 II
来源:互联网 发布:电话备份软件 编辑:程序博客网 时间:2024/06/06 03:15
问题描述:给一组整数,按照升序排序。使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法。
样例:给出 [3, 2, 1, 4, 5]
, 排序后的结果为 [1, 2, 3, 4, 5]
。
实现思路:我选用了快速排序,快速排序是一个递归的过程。首先我选择了第一个值为轴值,然后写Partition函数将待排记录划分成独立的两部分,左侧记录的关键码均小于或等于轴值,右侧记录的关键码均大于或等于轴值。然后利用递归方法分别对这两部分重复上述过程,直到整个序列有序。
实现代码:
class Solution {
public:
/**
* @param A an integer array
* @return void
*/
void sortIntegers2(vector<int>& A) {
// Write your code here
Quicksort(A,0,A.size()-1);
}
int Partition(vector<int>& A,int first,int end)
{
int i=first,j=end,povit=A[first];
while(i<j)
{
while(i<j&&A[i]<=A[j]) j--;
if(i<j)
{
swap(A[i],A[j]);
i++;
}
while(i<j&&A[i]<=A[j]) i++;
if(i<j)
{
swap(A[j],A[i]);
}
}
}
void Quicksort(vector<int>& A,int first,int end)
{
if(first<end){
int povit=Partition(A,first,end);
Quicksort(A,first,povit-1);
Quicksort(A,povit+1,end);
}
}
};
做题感想:用了课本上的方法,设置了两个参数i,j分别用来指示将要与轴值记录进行比较的左侧记录位置和右侧记录位置。老师讲了只设置一个参数,虽然写起来更简单,但是自己还是觉着书上的理解起来好点。
- 【LintCode】整数排序II
- 整数排序II-lintcode
- lintcode_整数排序 II
- LintCode-整数排序 II
- 整数排序 II
- 整数排序 II
- 整数排序 II
- 整数排序 II
- 整数排序 II
- 464.整数排序 II
- 整数排序 II
- 整数排序 II
- 整数排序II
- 整数排序 II
- 整数排序 II
- 整数排序 II
- LintCode 整数排序 II
- 整数排序II
- 每天进步一点点
- css常用技巧
- Windows Qt Creator 配置调试器
- JSP数据交互(cookie)
- 图像卷积与滤波知识点整理(2)
- 整数排序 II
- win32学习09.系统消息触发的总结
- CooKie
- js+css实现星级评分
- Banner轮播图的使用方法
- UML类图
- 两数之和
- tensorflow random forest模型损失函数不可用
- $.getJSON异步请求和同步请求