常见的四种排序算法

常见的四种排序算法,至于其原理我就不在这里描述了,不懂原理的可以自己去百度,下面直接给出代码。

void BubbleSort(int a[], int size, int order) //order为1代表升序,冒泡排序算法

{
int i, j;
for(i=0;i<size-1;i++)
{
for(j=0;j<size-i-1;j++)
{
if((order)?(a[j]>a[j+1]):(a[j]<a[j+1]))
{
a[j]=a[j]^a[j+1];
a[j+1]=a[j]^a[j+1];
a[j]=a[j]^a[j+1];
}
}
}
}




void SelectSort(int a[], int size, int order) //order为1代表升序,选择排序算法
{
int i, j, k;
for(i=0;i<size-1;i++)
{
k=i;
for(j=i+1;j<size;j++)
{
if((order)?(a[k]>a[j]):(a[k]<a[j])) k=j;
}

if(k!=i)
{
a[k]=a[k]^a[i];
a[i]=a[k]^a[i];
a[k]=a[k]^a[i];
}
}
}




void InsertSort(int a[], int size, int order) //order为1代表升序,插入排序算法
{
int i, j, k;
for(i=1;i<size;i++)
{
k=a[i];
j=i-1;
while(((order)?(a[j]>k):(a[j]<k)) && j>=0)
{
a[j+1]=a[j];
j--;
}
a[j+1]=k;
}
}




void QuickSort(int a[], int size, int order) //order为1代表升序,快速排序算法
{
int i,j,k;
if(size<=1) return;


i=0;
j=size-1;
k=a[i];


while(i!=j)
{
while(i!=j && ((order)?(a[j]>=k):(a[j]<=k)))
j--;
a[i]=a[j];
while(i!=j && ((order)?(a[i]<=k):(a[i]>=k)))
i++;
a[j]=a[i];
}


a[i]=k;
QuickSort(a,i,1);
QuickSort(a+i+1,size-i-1,1);

}


以上四种算法经过多次验证,不存在问题。当然还有其他的排序算法,后序用到了在补上。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值