整数排序 II
来源:互联网 发布:淘宝云客服报名 编辑:程序博客网 时间:2024/06/03 22:01
问题描述:给一组整数,按照升序排序。使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法。
样例:给出 [3, 2, 1, 4, 5], 排序后的结果为 [1, 2, 3, 4, 5]。
解题思路:根据题目要求,可以使用归并排序,快速排序与堆排序。这里选择一种我比较熟悉的快速排序。归并排序的思想为找到一个基准元素,通过排序使得左边的值都比中间值小,右边的数都比中间值大。然后再取一个基准元素,重复以上过程。所以快速排序是一个递归过程,在写程序的时候可以通过调用递归函数来实现。
实现代码:
class Solution {
public:
/**
* @param A an integer array
* @return void
*/
void sortIntegers2(vector<int>& A)
{
quickSort(A, 0, A.size() - 1);
}
private:
void quickSort(vector<int> &A, int l, int r) {
if (l >= r) {
return;
}
int i = l, j = r;
int pivot = A[(l + r) / 2];
while (i <= j) {
while (i <= j && A[i] < pivot) {
i++;
}
while (i <= j && A[j] > pivot) {
j--;
}
if (i <= j) {
int temp = A[i];
A[i] = A[j];
A[j] = temp;
i++;
j--;
}
}
quickSort(A, i, r);
quickSort(A, l, 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
- 网卡驱动之02驱动源码分析
- ubuntu 1604 配置hadoop spark 笔记
- Turing equation
- 进程和线程的区别和联系
- 2017.6.4 入门组 NO.2——睡眠
- 整数排序 II
- 多线程Thread与Runnable 以及五种状态
- 动态网页
- 表单校验
- struts2第十七讲学习笔记,Action处理复选框与JSP页面使用ognl处理map
- HDU1401 Solitaire (bfs)
- 关于Linux的动态共享库的设置
- PNP: NetCat
- 【BZOJ】4774 修路 斯坦纳树