C语言 排序算法总结
#include<stdio.h>
#include<stdlib.h>
//作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/
#define N 20
//冒泡排序
void bubble(int a[],int n){
int i,j,temp;
for(i=;i<n-;i++){
for(j=;j<n--i;j++){
if(a[j]>a[j+]){
temp=a[j];
a[j]=a[j+];
a[j+]=temp;
}
}
}
} //选择排序
void select(int a[],int n){
int i,j,min,temp;
for(i=;i<n-;i++){
min=i;
for(j=i+;j<n;j++){
if(a[j]<a[min]){
min=j;
}
}
if(min!=i){
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
}
}
//直接插入排序
void insert(int a[],int n){
int i,j,temp;
for(i=;i<n;i++){
temp=a[i];
j=i-;
while((temp<a[j]) && (j>=)){
a[j+]=a[j];
j--;
}
a[j+]=temp;
}
}
//折半插入排序
void bi_insert(int a[],int n){
int i,j,low,high,mid,temp;
for(i=;i<n;i++){
temp=a[i];
low=;
high=i-;
while(low<=high){
mid=(low+high)/;
if(a[mid]>temp){
high=mid-;
}
else
low=mid+;
}
for(j=i-;j>=high+;--j){
a[j+]=a[j];
}
a[high+]=temp;
}
}
//堆排序
void sift(int a[],int low,int high){
int i=low,j=i*,t=a[i];
while(j<=high){
if(j<high && a[j]<a[j+]){
++j;
}
if(t<a[j]){
a[i]=a[j];
i=j;
j=*i;
}
else
break;
}
a[i]=t;
} void heap(int a[],int n){
int i,temp;
for(i=n/;i>=;--i){
sift(a,i,n);
}
for(i=n;i>=;--i){
temp=a[i];
a[i]=a[];
a[]=temp;
sift(a,,i-);
}
} void main(){
int a[N];
int i,k,m;
printf("Please input a number:");
scanf("%d",&m);
printf("Please input %d numbers:\n",m);
for(i=;i<m;i++){
scanf("%d",a+i);
}
while(){
printf("1.冒泡排序\n2.选择排序\n3.直接插入排序\n4.折半插入排序\n5.堆排序\n0.exit\nPlease choose:");
scanf("%d",&k);
switch(k)
{
case : bubble(a,m);break;
case : select(a,m);break;
case : insert(a,m);break;
case : bi_insert(a,m);break;
case : heap(a,m-);break;
case : printf("Byebye!\n");system("pause");exit();
default :printf("Input error!\nPlease choose again:\n");continue;
}
printf("Result:\n");
for(i=;i<m;i++){
printf("%4d",a[i]);
}
printf("\n");
}
system("pause");
}
结果为:


C语言 排序算法总结的更多相关文章
- C语言排序算法之简单交换法排序,直接选择排序,冒泡排序
C语言排序算法之简单交换法排序,直接选择排序,冒泡排序,最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 简单交换法排序 /*简单交换法排序 根据序列中两个记录键值的比较结果来对换这两 ...
- C语言排序算法复习
排序算法有很多种,这里在复习和分析的基础上,做一个自己的总结: 首先要知道有哪些排序算法,google一下,有云C语言7大经典排序算法(也有8大).主要包括冒泡排序,快速排序,选择排序,插入排序,希尔 ...
- C语言排序算法学习笔记——插入类排序
排序就是讲原本无序的序列重新排序成有序的序列.序列里可以是一个单独数据,也可以是多个数据组合的记录,按照记录里的主关键字或者次关键字进行排序. 排序的稳定性:如果排序表中有两个元素R1,R2,其对应的 ...
- C语言 排序算法
冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序(如从大到小.首字母从A到Z)错误就把他们交换过来. 过程演示: 选 ...
- c语言排序算法总结
一.希尔(Shell)排序法 /* Shell 排序法 */ #include <stdio.h> void sort(int v[],int n) { int gap,i,j, ...
- C语言排序算法学习笔记——交换类排序
交换类排序:根据序列中两个元素关键字的比较结果来交换他俩在序列中的位置. 冒泡排序:假设待排序表长为n,从后往前(或从前往后)两两比较相邻元素的值,若为逆序(即A[i-1]>A[i])则交换他们 ...
- 两种常用的C语言排序算法
1. 要求输入10个整数,从大到小排序输出 输入:2 0 3 -4 8 9 5 1 7 6 输出:9 8 7 6 5 3 2 1 0 -4 解决方法:选择排序法 实现代码如下: #include &l ...
- C语言排序算法
(1)“冒泡法” 冒泡法大家都较熟悉.其原理为从a[0]开始,依次将其和后面的元素比较,若a[0]>a[i],则交换它们,一直比较到a[n].同理对a[1],a[2],...a[n-1]处理,即 ...
- C语言排序算法学习笔记——选择类排序
选择排序:每一趟(例如第i趟)在后面n-i+1(i=1,2,3,……,n-1)个待排序元素中选取关键字最小的元素,作为有序子序列的第i个元素,直到n-1趟做完,待排序元素只剩下1个,就不用再选了. 简 ...
随机推荐
- .Net C#域账号登陆验证
//获取登陆页输入的域账号.密码 string domainIP = ""; //域IP string userAccount = ""; //域账号 stri ...
- IIS域名转发
在IIS中设置Http重定向 界面操作如下: 最终通过上面的操作生成了一个配置文件如下: 我这面就是一个空的目录,里面仅包含这个配置文件,就可以实现转发啦
- mongodb "Element '{0}' does not match any field or property of class" 异常的解决方法
在序列化的对象上增加 [BsonIgnoreExtraElements]
- yarn install npm install (转载)
解决 npm i 及 yarn install 都无法进行安装的问题和node-sass安装太慢的问题 2018年03月31日 19:49:07 Johnny丶me 阅读数:2906更多 所属专栏: ...
- [PHP] swoole的安装和简单使用
1. pecl install swoole 开启http2支持需要的依赖库:apt-get install nghttp2 开启的几个参数: enable sockets supports? [no ...
- 6.2 小表驱动大表(exists的应用)
1. 优化原则:小表驱动大表,即小数据集驱动大数据集. select * from A where id in (select id from B) 等价于: for select id from B ...
- js实现ctrl+v上传图片
描述:实现类似QQ截图删上传图片的功能 a.需要的js插件 paste.image.js 地址:https://github.com/iyangyuan/pasteimg b.paste.image. ...
- http协议、web服务器、并发服务器(下)
Web静态服务器-5-非堵塞模式 单进程非堵塞模型 import socket import time def main(): tcp_socket_server = socket.socket(so ...
- trivial and nontrivial
Trivial A solution or example that is ridiculously simple and of little interest. Often, solutions o ...
- Docker 系列五(Docker Compose 项目).
一.概念 Docker Compose 是官方编排项目之一,负责快速的部署分布式应用.它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML格式)来定义一种相关联的应用容器 ...