#include "stdio.h"
void main()
{void read_data(int a[],int n);
void write_data(int a[],int n);
void comp(int a[],int n);
void insert(int a[],int n);
void bubble(int a[],int n);
int i,n=,a[];
printf("请输入元素个数:");
scanf("%d",&n);
printf("请选择排序方法(输入1选择法,输入2为插入法,输入3位为冒泡法):");
scanf("%d",&i);
read_data(a,n);
if(i==)
comp(a,n);
if(i==)
insert(a,n);
if(i==)
bubble(a,n);
write_data(a,n);
} void read_data(int a[],int n)
{int i=; printf("请输入元素:");
for(;i<n;i++)
scanf("%d",&a[i]);
} void comp(int a[],int n)
{ int i,j,t;
for(i=;i<(n-);i++)
for(j=i+;j<n;j++)
if(a[i]>a[j])
{t=a[i];
a[i]=a[j];
a[j]=t;
}
} void insert(int a[],int n)
{int i=,j=,k,t;
for(;i<n;i++)
{for(j=;j<i;j++)
if(a[i]<a[j])
{
t=a[i];
for(k=i;k>j;k--)
a[k]=a[k-];
a[j]=t;
}
}
} void bubble(int a[],int n)
{int i,j,t;
for(i=;i<n;i++)
for(j=;j<(n-);j++)
if(a[j]>a[j+])
{t=a[j+];
a[j+]=a[j];
a[j]=t;
}
} void write_data(int a[],int n)
{int i=;
for(;i<n;i++)
printf("%d\n",a[i]);
}

对于选择法排序,就是固定一个元素,然后与其他元素依次比较,把大的(或小的)放后面,一次循环下来,最小(大)的1个元素就到了第一位了;然后固定下一个元素,循环下来第二小(大)的元素就到第二位了;继续下去就排好了。
对于插入法排序,就是逐个把要插入的元素与已有的序列依次比较,按升序(或降序)把元素插进去,然后将原有序列的插入元素之后的元素依次后移一位,有多少要插入的元素就循环几次。
对于冒泡法排序,就是依次比较相邻的两个元素,进行排序,一次循环下来,最大的(或最小的)就到了最后;然后再次重新循环,把所有上次循环的赋值都初始化,最后就把第二大的数排在了倒数第二位了,依次下去。

三种排序方法(c语言)的更多相关文章

  1. java数组中的三种排序方法中的冒泡排序方法

    我记得我大学学java的时候,怎么就是搞不明白这三种排序方法,也一直不会,现在我有发过来学习下这三种方法并记录下来. 首先说说冒泡排序方法:冒泡排序方法就是把数组中的每一个元素进行比较,如果第i个元素 ...

  2. JS面向对象(3) -- Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法

    相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...

  3. C#使用DataSet Datatable更新数据库的三种实现方法

    本文以实例形式讲述了使用DataSet Datatable更新数据库的三种实现方法,包括CommandBuilder 方法.DataAdapter 更新数据源以及使用sql语句更新.分享给大家供大家参 ...

  4. JavaScript新手学习笔记3——三种排序方式(冒泡排序、插入排序、快速排序)

    每种编程语言学到数组的时候,都会讲到排序算法,当时学C语言的时候,卡在排序算法.今天来总结一下javascript中如何实现三种排序算法. 1.冒泡排序(默认升序排列哦) 原理: 冒泡排序的原理,顾名 ...

  5. 排序—时间复杂度为O(n2)的三种排序算法

    1 如何评价.分析一个排序算法? 很多语言.数据库都已经封装了关于排序算法的实现代码.所以我们学习排序算法目的更多的不是为了去实现这些代码,而是灵活的应用这些算法和解决更为复杂的问题,所以更重要的是学 ...

  6. O(n*logn)级别的算法之二(快速排序)的三种实现方法详解及其与归并排序的对比

    一,单路快排1.测试用例: #ifndef INC_06_QUICK_SORT_DEAL_WITH_NEARLY_ORDERED_ARRAY_SORTTESTHELPER_H #define INC_ ...

  7. 2017.10.25 Java List /ArrayList 三种遍历方法

    java list三种遍历方法性能比较 学习java语言list遍历的三种方法,顺便测试各种遍历方法的性能,测试方法为在ArrayList中插入记录,然后遍历ArrayList,测试代码如下: pac ...

  8. Java程序员的现代RPC指南(Windows版预编译好的Protoc支持C++,Java,Python三种最常用的语言,Thrift则支持几乎主流的各种语言)

    Java程序员的现代RPC指南 1.前言 1.1 RPC框架简介 最早接触RPC还是初学Java时,直接用Socket API传东西好麻烦.于是发现了JDK直接支持的RMI,然后就用得不亦乐乎,各种大 ...

  9. javase-常用三种遍历方法

    javase-常用三种遍历方法 import java.util.ArrayList; import java.util.Iterator; import java.util.List; public ...

随机推荐

  1. django 安装运行

    pip install django pip list 查看版本 python -m django --version 新建django django-admin startproject mysit ...

  2. H5动效的常见制作手法

    众所周知,一个元素,动往往比静更吸引眼球: 一套操作界面,合适的动态交互反馈能给用户带来更好的操作体验: 一个H5运营宣传页,炫酷的动画特效定能助力传播和品牌打造. 近两年,小到loading动画,表 ...

  3. (转)基于MVC4+EasyUI的Web开发框架经验总结(3)- 使用Json实体类构建菜单数据

    http://www.cnblogs.com/wuhuacong/p/3669708.html 最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开 ...

  4. CorelDRAW 2019新品发布,行业大咖就差你了

    近日,由苏州思杰马克丁软件公司独家代理的CorelDRAW 2019将在苏州开启一场设计上的饕餮盛宴,您报名了么? 不管您是专业的设计师还是热爱设计的狂热粉丝,都将有机会参与到我们的活动中,为了这场盛 ...

  5. Oracle下rman备份和还原到数据库任意一个时间点

    Rman备份为物理备份,启用rman备份必须开启数据库归档,开启归档后相当于给数据库加了一层双保险.Rman备份主要备份数据库的数据文件,控制文件,归档日志. RMAN 备份 一. 检查数据库是否启用 ...

  6. javaee 文件的复制

    package Shurushucu; import java.io.FileInputStream; import java.io.FileNotFoundException; import jav ...

  7. JQuery课堂学习笔记

    第1课 JQuery技术简介 <%@ page language="java" import="java.util.*" pageEncoding=&qu ...

  8. Laravel的维护模式

    1.开启维护模式:  php artisan down 2.关闭维护模式:php artisan up 3.当应用处于维护模式时,所有的路由都会指向一个自定义的视图.这对于更新应用或执行维护任务时临时 ...

  9. 【Tool】Augmentor和imgaug——python图像数据增强库

    Augmentor和imgaug--python图像数据增强库 Tags: ComputerVision Python 介绍两个图像增强库:Augmentor和imgaug,Augmentor使用比较 ...

  10. Java Pattern Matcher 正则表达式需要转义的字符

    见:http://blog.csdn.net/bbirdsky/article/details/45368709 /** * 转义正则特殊字符 ($()*+.[]?\^{},|) * * @param ...