LintCode 题目:整数排序

阅读: 评论:0

LintCode 题目:整数排序

LintCode 题目:整数排序

URL:

描述

给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 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());

即可:

 

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;}}}

即可:

(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;}}}

即可:

 

 

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;}

即可:

 

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;}

即可:

 

 

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

快速排序

归并排序

 

 

 

本文发布于:2024-02-01 00:22:00,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170671812132460.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:整数   题目   LintCode
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23