您的位置:首页 > 其它

用冒泡,选择,快速排序的方法排序

2015-09-08 22:33 363 查看

冒泡排序法

#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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: