C语言实现五大排序算法
来源:互联网 发布:淘宝信用等级怎么看 编辑:程序博客网 时间:2024/05/22 03:17
1.冒泡排序
n个数需进行(n-1)轮排序,轮数从0开始;
每轮排序需要比较的次数为n-1-i,每轮比较的元素为a[0],a[1],...,a[n-1-i]
详细算法:
void sort(int a[],int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
2.选择排序
n个数需进行(n-1)轮排序,轮数从0开始;
详细算法:
void sort(int a[],int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;//保存i的值,用k来循环排序
for(j=i+1;j<n;j++)
if(a[k]>a[j])
k=j;
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
3.快速排序
详细算法:
void quick_sort(int array[], int low, int hight)
{
int i,j,t,m;
if(low<hight)
{
i = low; //i=0
j = hight; //j=length-1
t = array[low]; //t=a[0]
while(i<j)
{
while(i<j && array[j]>t)//开始和后面的比较,如果后面的比他大继续,如果后面的比它小交换之
{
j--;
}
if(i<j)//在没有越界(i是从前面开始,j是从后面开始)的情况下进行交换
{
m=array[i];
array[i]=array[j];
array[j]=m;
}
while(i<j && array[i]<=t)//和前面的比较,如果前面的小于等于该关键数据继续,如果大于交换之
{
i++;
}
if(i<j)
{
m=array[j];
array[j]=array[i];
array[i]=m;
}
}
array[i]=t;//第一次比较结束,把i放到中间的位置,也即在i前面都比i小,在i后面都比i大
quick_paixu(array, low, i-1);//前面部分实现递归
quick_paixu(array, i+1, hight);//后面部分实现递归
}
}
4.直接插入排序
详细算法:
void InsertSort(int a[], int n)
{
int i,j,t;
for(i=1;i<n;i++)//把a[0]看做已经排序好
{
t=a[i];//取出一个未排序的数据
for(j=i-1;j>=0 && a[j]>t;j--)//在排序序列中查找位置
a[j+1]=a[j];//向后移动元素
a[j+1]=t;//插入数据到序列
}
}
5.希尔排序
详细算法:
void shellSort(int a[],int len)
{
int step;
int i,j,t;
for(step=len/2; step>0;step/=2) //用来控制步长,最后递减到1
{
// i从第step开始排列,应为插入排序的第一个元素
// 可以先不动,从第二个开始排序
for(i=step;i<len;i++)
{
t=a[i];
for(j=i-step;j>=0 && a[j]>t;j-=step)
{
a[j+step] = a[j];
}
a[j+step]=t; //将第一个位置填上
}
}
}
- C语言实现五大排序算法
- c语言五大排序算法
- C语言:五大基本排序算法
- C语言:五大基本排序算法
- c语言:五大基本排序算法
- 【C】五大排序算法
- 九大排序算法-C语言实现及详解
- 九大排序算法-c语言实现及详解
- c语言中6大排序算法实现和解析
- 九大排序算法-C语言实现及详解
- 五大排序算法的实现
- 排序算法(C语言实现)
- C语言排序算法实现
- 排序算法--C语言实现
- 排序算法大汇总c语言
- 五大排序 算法
- C语言实现排序算法---希尔排序
- C语言实现几大典型排序
- c++ time.h显示程序运行时间
- Android 根据路径获取文件名
- sockaddr_in
- Android属性动画的简单使用方法
- Android实践 -- 使用FileProvider安全的共享文件 简介篇
- C语言实现五大排序算法
- 关于 WPF浏览器程序报Security错误的解决方法的细究
- SQl语句中使用占位符的优点
- 软件架构书单 - 整理中
- Eclipse常用快捷操作
- Cpp Concurrency In Action(读书笔记1)——线程入门及管理
- LintCodet题目
- 你的文章,为什么没有人读?
- C# DLL 签名