冒泡排序,shell排序和快速排序算法实现

           我们常用到的排序算法有冒泡排序、shell排序、快速排序法,它们的性能和实现难易程度都不同,

   它们的排序原理网上很多,随便一搜就是,下面主要简要介绍一下实现过程:

    1、冒泡排序法:

        学习c语言的同学接触到的第一种排序算法便是冒泡排序算法,它的实现过程如下示

void maoPaoSort(int *data,int n){
   for(int i=0;i<n;i++)
	   for(int j=0;j<n-i-1;j++)
		   if(data[j+1]<data[j]){
		        data[j+1]+=data[j];
				data[j]=data[j+1]-data[j];
				data[j+1]-=data[j];
		   }
};

      2、shell排序法:

          shell排序算法相对于冒泡算法而言,其速度有所提升,但排序时会存在不稳定的因素,

      具体的实现过程如下所示:

void shellSort(int *data,int d,int n){
	int  j;
	for(int i=d;i<n;i++)
	   if(data[i]<data[i-d]){
			   j=i-d;
		do{
			 data[j+d]+=data[j];
			 data[j]=data[j+d]-data[j];
			 data[j+d]=data[j+d]-data[j];
			 j-=d;
		}while(j>0&&data[j+d]<data[j]);

	}
};
void startShell(int *data,int n){
	int parameter=n;
	do{
	   parameter=parameter/3+1;
	   shellSort(data,parameter,n);
	}while(parameter>1);
}
     3、快速排序法:

          这一算法和shell排序算法存在着相同的问题,即,排序时的不稳定因素,但,其排序的

     速度比前两种算法快点;其具体实现过程如下示:

int quickSort(int *data,int left,int right){
	if(left<right){
        int pleft,pright,k=0;
		pleft=left;
		pright=right;
		while(pleft<pright){
			if(k==0&&data[pright]<data[pleft]){
			       data[pright]+=data[pleft];
                   data[pleft]=data[pright]-data[pleft];
				   data[pright]-=data[pleft];
				   k=1;
			}else if(k==0){
			       pright--;
			}
			if(k==1&&data[pright]<data[pleft]){
			       data[pright]+=data[pleft];
                   data[pleft]=data[pright]-data[pleft];
				   data[pright]-=data[pleft];
				   k=0;
			}else if(k==1){
			       pleft++;
			}
		}
           quickSort(data,left,pright-1);                 //循环递归排序左边
	   quickSort(data,pleft+1,right);                 //循环递归排序右边
	}
	return 0;
};



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值