冒泡排序法
#include<stdio.h>
void swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
void sort(int x[],int n)
{
int i,j;
for(i=0;i<n-1;i++) //一共进行n-1次循环
{
for(j=0;j<n-1-i;j++)
{
if(x[j]>x[j+1])
swap(&x[j],&x[j+1]);
}
}
}
int main()
{
int i;
int a[10]={9,8,7,6,5,4,3,2,1,0};
sort(a,10);
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
return 0;
}
选择排序法
#include<stdio.h>
void swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
void sort(int x[],int n)
{
int min,i,j;
for(i=0;i<n-1;i++)
{
min=i; //min标记当前最小元素的下标
for(j=i+1;j<n;j++)
{
if(x[j]<x[min])
min=j;
}
if(min!=i)
{
swap(&x[i],&x[min]);
}
}
}
void main()
{
int i;
int a[10]={9,8,7,6,5,4,3,2,1,0};
sort(a,10);
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
}
快速排序法
#include<stdio.h>
void quicksort(int arr[10],int l,int r)
{
if(l<r)
{
int i=l,j=r;
int x=arr[l];
while(i<j)
{
while(i<j&&arr[j]>x)
j--;
if(i<j)
{
arr[i]=arr[j];
i++;
}
while(i<j&&arr[i]<x)
i++;
if(i<j)
{
arr[j]=arr[i];
j--;
}
}
arr[i]=x;
quicksort(arr,l,i-1);
quicksort(arr,i+1,r);
}
}
int main()
{
int i;
int a[10]={9,8,7,6,5,4,3,2,1,0};
quicksort(a,0,9);
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
return 0;
}