0
点赞
收藏
分享

微信扫一扫

LintCode 题目:整数排序

URL:​​https://www.lintcode.com/problem/sort-integers/description​​

描述

给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法。

您在真实的面试中是否遇到过这个题?  

样例

样例  1:
输入: [3, 2, 1, 4, 5]
输出: [1, 2, 3, 4, 5]

样例解释:
返回排序后的数组。

样例 2:
输入: [1, 1, 2, 1, 1]
输出: [1, 1, 1, 1, 2]

样例解释:
返回排好序的数组。

思路:

首先你应该掌握vector的基本操作(请参考:​​vector常用解法及详解​​)。

 

 

1.使用algorithm下的sort()函数(请参考:​​algorithm头文件下的常用函数之sort()​​):

在代码段中添加:

sort(A.begin(),A.end());

即可:

LintCode 题目:整数排序_代码段

 

2.冒泡排序(请参考:​​冒泡排序​​):

(1)迭代器访问:

在代码段中添加:

for(vector<int>::iterator it = A.begin()+1;it != A.end();it++){
for(vector<int>::iterator it1 = A.begin();it1 != A.end()-1;it1++){
if(*it1>*(it1+1)){
int temp = *it1;
*it1 = *(it1+1);
*(it1+1) = temp;
}
}
}

即可:

LintCode 题目:整数排序_插入排序_02

(2)下标访问:

在代码段中添加:

for(int i=1;i<A.size();i++){
for(int j=0;j<A.size()-i;j++){
if(A[j]>A[j+1]){
int temp = A[j];
A[j] = A[j+1];
A[j+1] = temp;
}
}
}

即可:

LintCode 题目:整数排序_冒泡排序_03

 

 

3.选择排序(请参考:​​选择排序​​):

下标访问:

在代码段中添加:

for(int i=0;i<A.size();i++){
int min = i;
for(int j=i;j<A.size();j++){
if(A[j]<A[min]){
min = j;
}
}
int temp = A[i];
A[i] = A[min];
A[min] = temp;
}

即可:

LintCode 题目:整数排序_冒泡排序_04

 

4.插入排序(请参考:​​插入排序​​):

下标访问:

在代码段中添加:

for(int i=1;i<A.size();i++){
int temp = A[i];
int j=i;
while(j>0&&temp<A[j-1]){
A[j] = A[j-1];
j--;
}
A[j] = temp;
}

即可:

LintCode 题目:整数排序_插入排序_05

 

 

另外还有快速排序和递归排序请参考:

​​快速排序​​

​​归并排序​​

 

 

 


举报

相关推荐

0 条评论