冒泡排序:
void sort(int * a , int n)
{
int i , j , temp;
for(i = 0 ; i < n - 1 ; i++)
{
for(j = 0 ; j < n - i - 1 ; j++)
{
if(a[j] > a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
选择排序:
void sort(int * a, int n)
{
int i , j , temp;
for(i = 0 ; i < n - 1 ; i ++)
{
for(j = i + 1 ; j < n ; j ++)
{
if(a[i] > a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
快速排序:
int FindPos(int * a , int first , int end)
{
int val = a[first];
while( first < end)
{
while( first < end && a[end] >= val)
--end;
a[first] = a[end];
while( first < end && a[first] <= val)
++first;
a[end] = a[first];
}
a[first] = val;
return first;
}
void sort(int * a , int first , int end)
{
int pos;
if ( first < end )
{
pos = FindPos(a , first , end);
sort(a , first , pos-1);
sort(a , pos+1 , end);
}
}
归并排序:
void merge(int * number,int first,int last,int mid)
{
int number_temp[10]={0};
int i=first,j=mid+1,k;
for(k=0;k<=last-first;k++)
{
if (i==mid+1)
{
number_temp[k]=number[j++];
continue;
}
if (j==last+1)
{
number_temp[k]=number[i++];
continue;
}
if (number[i]<number[j])
number_temp[k]=number[i++];
else
number_temp[k]=number[j++];
}
for (i=first,j=0;i<=last;i++,j++)
number[i] = number_temp[j];
}
void merge_sort(int * number,int first,int last)
{
int mid=0;
if(first<last)
{
mid=(first+last)/2;
merge_sort(number,first,mid);
merge_sort(number,mid+1,last);
merge(number,first,last,mid);
}
}