问题描述:给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法。
样例:对于数组 [3, 2, 1, 4, 5]
, 排序后为:[1, 2, 3, 4, 5]
。
实现思路:我选用了直接插入排序算法,遍历数组,从A[i]开始往前比,如果遇到A[i]<A[i-1],那么交换两者并将i-1,直到i=0位置停止。
实现代码:
class Solution {
public:
/**
* @param A an integer array
* @return void
*/
void sortIntegers(vector<int>& A) {
// Write your code here
for(int i=1;i<A.size();i++)
{
while(i>0&&A[i]<A[i-1])
{
swap(A[i],A[i-1]);
i--;
}
}
}
};
做题感想:一开始外层循环是从i=1开始的,只有64%数据能通过。