描述:
给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法。
样例:
对于数组 [3, 2, 1, 4, 5]
, 排序后为:[1, 2, 3, 4, 5]
。
思路:
无论是冒泡排序、选择排序、插入排序都是O(n^2)的算法。
AC代码:
冒泡排序:
class Solution {
public:
/**
* @param A an integer array
* @return void
*/
void sortIntegers(vector<int>& A) {
// Write your code here
int n=A.size();
int i,j,temp;
for(i=0;i<n;i++)
for(j=i;j<n;j++)
{
if(A[i]>A[j])
{
temp=A[i];
A[i]=A[j];
A[j]=temp;
}
}
}
};
插入排序:
class Solution {
public:
/**
* @param A an integer array
* @return void
*/
void sortIntegers(vector<int>& A) {
// Write your code here
int n=A.size();
int i,j,temp;
for(i=0;i<n;i++)
{
temp=A[i];
j=i-1;
while(temp<A[j]&&j>=0)
{
A[j+1]=A[j];
j=j-1;
}
A[j+1]=temp;
}
}
};
选择排序:
class Solution {
public:
/**
* @param A an integer array
* @return void
*/
void sortIntegers(vector<int>& A) {
// Write your code here
int n=A.size();
int i,j,d,temp;
for(d=n/2;d>=1;d=d/2)
{
for(i=d;i<n;i++)
{
temp=A[i];
j=i-d;
while(j>=0 && temp<A[j])
{
A[j+d]=A[j];
j=j-d;
}
A[j+d]=temp;
}
}
}
};