您的位置:首页 > 编程语言 > C语言/C++

c语言排序之冒泡排序,选择排序,插入排序,快速排序总结

2015-08-02 14:13 686 查看
这几天研究了一下排序算法,我发现网上很多代码给定的都是伪代码,或是里面表达的内容不清楚,不方便初学者学习与分析,然后我根据自己的经验把源代码写下来,仅供大家参考:

/***********************************************
* 作者			:skywalker_prime
* 联系方式 	:shanquan54@163.com
* 最后修改时间	:2015-08-02 14:08
* 文件名称 	:sorting.c
* 程序描述		:
* csdnd地址	:blog.csdn.net/skywalker_prime
***********************************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 6
void bubble(int a[],int n);
void choose(int a[],int n);
void insert(int a[],int n);
void quick(int a[],int low,int high);
int main()
{
int i=0;
int a[6]={3,5,11,1,6,7};
//	bubble(a,N);
//choose(a,N);
//insert(a,N);
quick(a,0,N-1);
for(i=0;i<N;i++)// 打印排序后的序列
printf("%d ",a[i]);
printf("\n");
return 0;
}
#if 0
void bubble(int a[],int n)//冒泡排序法
{
int temp=0;
int i=0,j=0;
for(i=1;i<N;i++)
{
for(j=N-1;j>=i;j--)
{
if(a[j]<a[j-1])
{
temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
}
}
#endif
#if 0
void choose(int a[],int n)//选择法
{
int i=0,j=0,k=0,temp;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(a[k]>a[j])
{
k=j;
}
if(k!=i)
{
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}
}
}
#endif
#if 0
void insert(int a[],int n)// 插入法
{
int i,j,key;
for(i=1;i<n;i++)
{
j=i;
key=a[i];
while(j>0&&key<a[j-1])
{
a[j]=a[j-1];
j--;
}
a[j]=key;
}
}
#endif

void quick(int a[],int low,int high)//快速排序
{
int temp,i,j;
if(low<high)
{
int key=a[low];
i=low,j=high;
while(1)
{
while(i<j&&a[i]<key)
i++;
while(j>i&&a[j]>key)
j--;

if(i>=j)
{
break;
}
temp=a[i];
a[i]=a[j];
a[j]=temp;
}

temp=a[j];
a[j]=key;
key=temp;
quick( a, low, (j-1));
quick( a, i+1, high);
return ;

}

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