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

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


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


*************************************************************************待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值