插入排序:O(n*n)
void Insert_sort(int* a,int n)
{
int i = 0;
int j = 0;
int k = 0;
int temp = 0;
for(i=1;i<n;i++)
{
k = i;
temp = a[k];
for(j=i-1;j>=0;j--)
{
if(a[j]>temp)
{
a[j+1] = a[j];
k = j; //记下移动的位置
}
}
a[k] = temp;//插入
}
}
冒泡排序:O(n*n)
void Bubble_sort(int*a, int n)
{
int i, j;
for(i=0; i<n-1; ++i)
{
for(j=0; j<n-i-1; ++j)
{
if(a[j]>a[j+1])
{
int t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
}
选择排序:O(n*n)
void Select_sort(int *a, int n)
{
int i, j;
for(i = 0; i < n-1; i++)
{
int k = i;
for(j = i; j < n-1; j++)
{
if(a[j]<a[k])
k = j;
}
if(k != i)
swap(a[k], a[j]);
}
}
快速排序:O(nlogn)
void Qucik_sort(int *a, int n)
{
if (n < 1) return;
int L = 0;
int R = n - 1;
int m = a[L];
while (L < R)
{
while (L < R && m < a[R])
R--;
a[L] = a[R];
while (L < R && a[L] < m)
L++;
a[R] = a[L];
}
a[L] = m;
Qucik_sort(a, L);
Qucik_sort(a + L + 1, n - L - 1);
}