#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语言 排序算法总结的更多相关文章

  1. C语言排序算法之简单交换法排序,直接选择排序,冒泡排序

    C语言排序算法之简单交换法排序,直接选择排序,冒泡排序,最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 简单交换法排序 /*简单交换法排序 根据序列中两个记录键值的比较结果来对换这两 ...

  2. C语言排序算法复习

    排序算法有很多种,这里在复习和分析的基础上,做一个自己的总结: 首先要知道有哪些排序算法,google一下,有云C语言7大经典排序算法(也有8大).主要包括冒泡排序,快速排序,选择排序,插入排序,希尔 ...

  3. C语言排序算法学习笔记——插入类排序

    排序就是讲原本无序的序列重新排序成有序的序列.序列里可以是一个单独数据,也可以是多个数据组合的记录,按照记录里的主关键字或者次关键字进行排序. 排序的稳定性:如果排序表中有两个元素R1,R2,其对应的 ...

  4. C语言 排序算法

    冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序(如从大到小.首字母从A到Z)错误就把他们交换过来. 过程演示: 选 ...

  5. c语言排序算法总结

    一.希尔(Shell)排序法 /* Shell 排序法 */ #include <stdio.h> void sort(int v[],int n) {      int gap,i,j, ...

  6. C语言排序算法学习笔记——交换类排序

    交换类排序:根据序列中两个元素关键字的比较结果来交换他俩在序列中的位置. 冒泡排序:假设待排序表长为n,从后往前(或从前往后)两两比较相邻元素的值,若为逆序(即A[i-1]>A[i])则交换他们 ...

  7. 两种常用的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 ...

  8. C语言排序算法

    (1)“冒泡法” 冒泡法大家都较熟悉.其原理为从a[0]开始,依次将其和后面的元素比较,若a[0]>a[i],则交换它们,一直比较到a[n].同理对a[1],a[2],...a[n-1]处理,即 ...

  9. C语言排序算法学习笔记——选择类排序

    选择排序:每一趟(例如第i趟)在后面n-i+1(i=1,2,3,……,n-1)个待排序元素中选取关键字最小的元素,作为有序子序列的第i个元素,直到n-1趟做完,待排序元素只剩下1个,就不用再选了. 简 ...

随机推荐

  1. RNN入门(一)识别MNIST数据集

    RNN介绍   在读本文之前,读者应该对全连接神经网络(Fully Connected Neural Network, FCNN)和卷积神经网络( Convolutional Neural Netwo ...

  2. [转]usdt omnicore testnet 测试网络

    本文转自:https://www.jianshu.com/p/417c280b8f9f Testnet 模式允许 omni core 运行在比特币测试链上,用于安全测试. 为了在 testnet 上收 ...

  3. [转]VirtualBox安装CentOS7

    本文转自:http://www.cnblogs.com/xyinjie/p/9437049.html 一:.下载CentOS7的镜像 下载地址:https://www.centos.org/downl ...

  4. Docker镜像目录无法删除

    docker pull下来的镜像目录默认放在:C:\ProgramData\docker\windowsfilter.由于拉下来的镜像已经几乎占满了C盘的空间,准备删除所有的镜像,却发现删除不掉. 搜 ...

  5. No application encryption key has been specified.

    环境:php7.1.10laravel5.5出现: 解决:在根目录下执行: php artisan key:generate OK问题解决

  6. springMVC_03注解完成hello案例

    1.导入jar包 commons-logging-1.1.1.jar jackson-annotations-2.5.4.jar jackson-core-2.5.4.jar jackson-data ...

  7. Netty实战十一之预置的ChannelHandler和编解码器

    Netty为许多通用协议提供了编解码器和处理器,几乎可以开箱即用,这减少了你在那些相当繁琐的事务上本来会花费的时间与精力.我们将探讨这些工具以及它们所带来的好处,其中包括Netty对于SSL/TLS和 ...

  8. Math.max()/min()

    返回一组数中最大值: 找到数组中的最大值,有两种方法,一种是apply,一种使用拓展运算符. 释义: 由于max()里面参数不能为数组,所以借助apply(funtion,args)方法调用Math. ...

  9. MySQL 内置函数

    CHAR_LENGTH(str) 返回值为字符串str 的长度,长度的单位为字符.一个多字节字符算作一个单字符. +------------------------+ | CHAR_LENGTH('k ...

  10. Oracle11g: simple sql script examples

    ---https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_8003.htm drop user geovin; drop ...