您的位置:首页 > 理论基础 > 数据结构算法

数据结构--快速、冒泡、选择排序C语言实现

2014-02-21 10:39 274 查看
#include<stdio.h>

//快速排序

void quickSort(int a[],int left,int right)

{

int i,j,temp;

i = left;

j = right;

temp = a[left];

if(left>right)

return;

while(i!=j)

{

while(a[j]>=temp &&j>i)

j--;

if(j>i)

a[i++] = a[j];

while(a[i]<=temp&&j>i)

i++;

if(j>i)

a[j--] = a[i];

}

a[i] = temp;

quickSort(a,left,i-1);

quickSort(a,i+1,right);

}

//冒泡排序

void bubbleSort(int a[],int len)

{

int i,j,temp;

for(i = 0;i<len;i++)

{

for(j = 0;j<len-i-1;j++)

{

if(a[j]>a[j+1])

{

temp = a[j];

a[j] = a[j+1];

a[j+1]=a[j];

}

}

}

}

//选择排序算法

void selectSort(int a[],int len)

{

int i,j,temp,min;

for(i = 0;i<len-1;i++)

{

min = i;

for(j = i+1;j<len;j++)

{

if(a[j]<a[min])

min = j;

}

temp = a[min];

a[min] = a[i];

a[i] = temp;

}

}

void main()

{

int i, a[]={2,14,6,3};

int size = sizeof(a)/sizeof(int);

selectSort(a,size);

printf("选择排序之后数组为:\n");

for(i = 0;i<size;i++)

printf("%3d",a[i]);

printf("\n");

quickSort(a,0,size-1);

printf("快速排序之后数组为:\n");

for(i = 0;i<size;i++)

printf("%3d",a[i]);

printf("\n");

bubbleSort(a,size);

printf("冒泡排序之后数组为:\n");

for(i = 0;i<size;i++)

printf("%3d",a[i]);

printf("\n");

}

快速排序:将第一个元素存到临时变量。从最后一个元素依次往前找,直到找到比第一个数小的值,并赋给第一个元素,然后再从第二个元素往后找,直到找到一个比它大的值,赋给它,这也就找到了左边比该值大右边比该值小的所有数。然后递归即可。

冒泡排序:两次for循环,两个相邻的数进行比较,前面的值比后面的大就交换两者数据,直到把最大的值放到最后面,然后在比较除最后一个元素之前的数。比较次数一次减少一个(j<len-i-1)

选择排序:假设第一个元素最小,从第二个元素开始,若比第一个元素小,最第二个元素为最小,依次找到最后,则每次选出最小的放在第一位。

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