#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. Kinect+OpenNI+OpenCV使用

    关于OpenNI,已经可以使用2.0,可以不再使用PrimeSense: 这里的是转载其他人的 OpenCV系列: 原文:http://blog.csdn.net/chenxin_130/articl ...

  2. nodeJs的一些常识知识

    在项目目录中打开命令窗口 1. npm init 生成一个 package.json.(npm inii -y 直接生成,不用确定). 2.npm i . 下载 package.json devDep ...

  3. IE 11 浏览器兼容性视图设置

    1.打开IE 浏览器. 2.选择“工具”---“兼容性视图设置”.3.在“在兼容性视图中显示所有网站”前面勾选住. 点击关闭就可以了. 开发人员工具 1.找到“工具”----“F12开发人员工具”.2 ...

  4. 用shell编写一个三角形图案

    第一种方法 #!/bin/bash read -p "请输入层数: " n for (( i=1; i<=$n;i++ ))do   for (( j=n; j>=i; ...

  5. 路飞学城Python-Day75

    1.什么是Django? Django是一个web框架,也是python中最火的一个框架,应用最多,内容最全 2.什么是web框架? python的一个脚本就是一个应用程序,web框架就是和前端有关系 ...

  6. 解决python3在sublim Text3中中文乱码的问题

    在Tool >> BulidingSystem 中  新建 python3 写入如下代码 { "cmd": ["C:/python3/python.exe&q ...

  7. 两个sed小技巧:sed "/变量/变量/"

    两个sed小技巧 在写shell时使用sed处理一些输出,遇到两个问题,在网上找到了相应的解决办法,在此处备份一下. [ sed处理空字符 ] 空字符,它的ASCII码值为0.在sed中如何标识空字符 ...

  8. CSS - 内联元素span 强制换行失败的可能原因

    在CSS中,标签span 强制换行失败:(使用display:block) 可能原因:float:left   or  float:right

  9. 06006_redis数据存储类型——String

    1.概述 (1)字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等: (2)在Redis中 ...

  10. 环境搭建Selenium2+Eclipse+Java+TestNG_(一)

    第一步  安装JDK 第二步 下载Eclipse 第三步 在Eclipse中安装TestNG 第四步 下载Selenium IDE.SeleniumRC.IEDriverServer 第五步 下载Fi ...