#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. DDoS攻击与防范策略

    DDoS(Distributed Denial of Service,分布式拒绝服务)攻击的主要目的是让指定目标无法提供正常服务,甚至从互联网上消失,是目前最强大.最难防御的攻击之一. 按照发起的方式 ...

  2. 团体程序设计天梯赛-练习集-L1-026. I Love GPLT

    L1-026. I Love GPLT 这道超级简单的题目没有任何输入. 你只需要把这句很重要的话 —— “I Love GPLT”——竖着输出就可以了. 所谓“竖着输出”,是指每个字符占一行(包括空 ...

  3. day09网络编程

    一 操作系统基础 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才 ...

  4. CenOS 安装python3 与python2共存

    Linux下默认系统自带python2.6的版本,这个版本被系统很多程序所依赖,所以不建议删除,如果使用最新的Python3那么我们知道编译安装源码包和系统默认包之间是没有任何影响的,所以可以安装py ...

  5. 第一章 JavaScript 简介

    1.1   JavaScript 的简史 JavaScript 诞生于1995年 ,后由 欧洲计算机制造商协会( ECMA,European Computer Manufacturers Associ ...

  6. css实现三栏水平布局双飞翼与圣杯布局

    作为布局的入门级选手,网上也查看了很多信息和资源 双飞翼的html结构 <div class="container"> <div class="main ...

  7. 使用shell脚本定时备份web网站代码

    #!/bin/bash ############### common file ################ #备份文件存放目录 WEBBACK_DIR="/data/backup/ba ...

  8. uni-app 之验证码

    手机APP---验证码 最近公司在开发手机APP,app避不可免的就是登录了,emmmm 登录验证码那必须的是有的,我们公司发给我们的图片是酱紫的~~ 这个要求大家应该都能看懂,做这个手机号啊,验证码 ...

  9. 服务器重启后启动Docker命令

    启动步骤: 1.启动Docker 守护进程 systemctl daemon-reload 2.Docker启动命令: systemctl start docker 3.查看docker服务是否启动 ...

  10. 各项硬件使用剖析(一)---让你一眼就能区分瓶颈是Memory、processor ORdisk!