一.题目描述
给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法。
样例
对于数组 [3, 2, 1, 4, 5]
, 排序后为:[1, 2, 3, 4, 5]
。
二.解题思路
给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法。
对于数组 [3, 2, 1, 4, 5]
, 排序后为:[1, 2, 3, 4, 5]
。
对元素进行两两比较,若前一个元素比后面的大,则将两元素交换位置,直到将最大的元素移到最后,再对前n-1个元素重复刚才的过程,依次进行完成排序.
三.实现代码class Solution {
public:
/**
* @param A an integer array
* @return void
*/
void sortIntegers(vector<int>& A) {
// Write your code here
if(A.size()<=1)
return;
int n = A.size();
for(int i=n-1;i>=0;i--){
for(int j=0;j<i;j++){
if(A[j]>A[j+1]){
int t = A[j];
A[j] = A[j+1];
A[j+1] = t;
}
}
}
}
};
思路比较容易想到,将最大的放到第n个位置,次大的放到第n-1个位置......最小的在第一个,完成对整体的排序.