C语言实现几大典型排序
来源:互联网 发布:丁丁软件是什么情况 编辑:程序博客网 时间:2024/05/30 04:19
1 简单选择排序
适合数据个数n较小的情况,思想是在n个待排序数据中选出最小的,通过n-i次关键字的比较,从n-i-1个记录中选出最小的,并和第i个关键字交换;
平均时间复杂度是O(n的平方)代码如下:
void selectSort(int p[],int n){
//从小到大排序
int k,temp;
for(int i=0;i<n;i++){
k=i;
for(int j=i;j<n;j++){
if(p[k]>p[j]) k=j;
}
if(i!=k)
{
temp=p[k];
p[k]=p[i];
p[i]=temp;
}
}
}
2 插入排序 (衍生的有希尔排序)
主要思想是将一个数插入到一个有序数列中,平均时间复杂度是O(n的平方),主要代码如下:
void insertSort(int *p,int n){ //从大到小
int temp;
int k;
for(int i=1;i<n;i++)
{
k=p[i];
if(p[i]>p[i-1])
{
int j;
p[i]=p[i-1];
for(j=i-2;j>=0;--j){
if(p[j]<p[j+1])
p[j+1]=p[j];
}
p[j+1]=k;
}
}
}
3 快速排序
主要思想是通过一趟排序,将待排序列分割成2半,左边的均比关键字小,右边的都比关键字大,平均时间复杂度是O(nlogn),空间复杂度是O(logn)。主要代码如下:
void quickSort(int *p,int m,int n){
if(m<n){
int i=m;
int j=n;
int temp;
while(i<j){
while(i<n)
if(p[i]>p[m])
break;
else
i++;
while(j>m)
if(p[j]<p[m])
break;
else
j--;
if(i<j)
{
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
}
temp=p[j];
p[j]=p[m];
p[m]=temp;
quickSort(p,m,j-1);
quickSort(p,i,n);
}
}
4 堆排序
时间复杂度不管是最好,最差还是平均的情况下都是O(logn),主要代码如下
#include <iostream>
#include<stdio.h>
using namespace std;
void heapAdjust(int *p,int m,int n){
int temp=p[m];
for(int i=m*2;i<n;i=i*2){
if(p[i]<p[i+1]) i++;
if(temp>=p[i]) break;p[m]=p[i];
m=i;
}
p[m]=temp;
}void HeapSort(int *p,int n){
int temp;
for(int i=(n-1)/2;i>=0;--i)
heapAdjust(p,i,n);for(int j=n-1;j>0;--j){
temp=p[0];
p[0]=p[j];
p[j]=temp;
heapAdjust(p,0,j-1);
}}
int main(){
int a[10]={2,5,3,1,6,7,4,10,45,34};
HeapSort(a,10);
printf("排序后数据如下:");
for(int i=0;i<10;i++)
{
printf("%d ",a[i]);
}getchar();
return 0;
}
- C语言实现几大典型排序
- c语言实现几种排序算法
- 几大典型排序算法的c++代码实现及总结
- C语言实现五大排序算法
- c语言实现几种排序算法OC实现
- C语言典型代码---Curl实现POST
- 几种排序方法的实现 (C语言)
- 几种排序方法的C语言实现
- 几种常用排序算法的C语言实现
- C语言实现几种常见排序算法
- 几种常见排序算法的c语言实现
- 几种常用排序算法的C语言实现
- 数据排序的几种方法(c语言实现)
- 几种常见排序算法的C语言实现
- 几种排序算法的C语言实现
- 数据排序的几种方法(c语言实现)
- 几种常见的排序方法(C语言实现)
- 几种C语言实现的排序算法
- 如何给静态文本框添加背景图片
- uva 10315 Poker Hands
- 实现业务系统中的用户权限管理--实现篇
- File类和Directory类
- JS/JQuery 总结
- C语言实现几大典型排序
- 控制其它窗口控件VC篇
- 在 Linux里设置环境变量的方法(export PATH)
- Jquery清空(获取)当前页面所有的input和textarea的两种写法
- 反调试技巧总结-原理和实现(1)(2)(3)(4)(5)(6)......
- 企业战略(Enterprise Strategy)
- centos下ftp的架设和配置
- 记录一下自己常用的maven工程的pom.xml模板
- HOJ分类 转载自图灵老兄