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());即可:

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;
        }即可:

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










