[LintCode] Sort Integers 整数排序
Given an integer array, sort it in ascending order. Use selection sort, bubble sort, insertion sort or any O(n2) algorithm.
Example
Given [3, 2, 1, 4, 5], return [1, 2, 3, 4, 5].
这道题让我们实现最基本的几个O(n2)的排序算法,选择排序,冒泡排序和插入排序,都是最基本的排序算法。我们一个一个来看,首先来看冒泡排序,算法思路很简单,遍历数组,把当前数字的后面所有的数字都遍历一遍,遇到小的跟当前数字交换,这样遍历的过程中,所有大的数字就像气泡一样都到数组的后面去了,这也是为啥叫冒泡排序的原因,参见代码如下:
class Solution {
public:
/**
* @param A an integer array
* @return void
*/
//bubble sort
void sortIntegers(vector<int>& A) {
// Write your code here
if(A.size() != 0 )
{
for (int i = 0; i<A.size(); i++)
for(int j = i+1; j< A.size();j++){
if(A[i] > A[j])
{
swap(A[i],A[j]);
}
}
}
}
//insertion sort
void sortIntegers(vector<int>& A){
for(int i=1;i<A.size();++i){
while(i>0 && A[i] <A[i-1]){
swap(A[i],A[i-1]);
--i;
}
}
}
//Selsction sort
void sortIntegers(vector<int>& A){
for(int i = 0; i< A.size();i++)
{
int min_idx = i;
for (int j = i+1;j< A.size(); j++)
{
if(A[j] < A[min_idx]){
min_idx = j;
}
}
swap(A[i],A[min_idx]);
}
}
};