1.冒泡排序法:

假设有n个数需要按从小到大排序,冒泡排序的原理是,在这一排数字中,将第一个数与第二个数比较大小,如果后面的比前面的小,就将他们交换位置.然后再比较第二个和第三个,再交换,直到第n-1个和第n个,此时第n个就是这n个数中最大,然后再重新找第二大的放在第n-1的位置...

在c编程中是通过两个嵌套的循环,内循环控制比较时的下标(从0到放最大的数的下标之前),外循环控制总的次数(放最大的数的下标到1),以及内循环的比较次数,其中要注意的是总的剩余的次数等于该次外循环中内循环的初始比较次数,外循环的初始次数为n-1,因为要排n个数,只需要弄好n-1个数的位置就好了,内循环的初始次数和外循环一样,因为n个数,按顺序拿一个数与后面的数比较大小,最后那个数后面没有和他比较的,所以也是n-1次.和外循环次数相同.

#include <stdio.h>  

void main()
{
int a[10] = { 5,1,6,9,8,3,4,6,10,7 };
int temp = 0;
for (int j = 9; j>0; j--)
{
for(int i=0;i<j;i++)
{
if (a[i]>a[i+1])
{
temp = a[i];
a[i] = a[i+1];
a[i + 1] = temp;
}
}
}
for (int i = 0; i<10; i++)
printf("%d ", a[i]);
}

2.选择排序法

假设有n个数需要按从小到大排序,选择排序法的原理是:选择排序在我看来只是冒泡循环的优化方法,思路是在这n个数中先找到最大的数,并记录其下标,然后将最大的数与第n个数交换值(如果正好第n个数是最大的就不用交换了),然后再在剩下的n-1个数中,找最大的数,和第n-1个数交换值...以此类推,和冒泡排序不同的是,每一次的内循环中不会不断的交换值来浪费时间,内循环只是判断寻找最大值的下标,执行一次外循环才有可能有复制交换值的动作,所以大大减少了复杂度.注意:选择排序中内循环的变量范围与冒泡排序不同,冒泡排序因为有[i+1],是选相邻的两个比较,也就是从0比到n-1,而选择排序是假定第0个元素是最大的,碰到比他大的就更新maxindex,也就是从1比到n.但总次数是相同的.

选择最大值的思路是,假定第0个元素是最大的,如果碰到比它大的就更新maxindex.注意:每次内循环之前,别忘了将maxindex归零.

#include <stdio.h>
void main()
{
int a[10] = { 5,1,6,9,8,3,4,6,10,7 };
int maxindex = 0, temp;
for (int j = 9; j > 0; j--)
{
maxindex = 0;
for (int i = 1; i <= j; i++)
{
if (a[maxindex] < a[i])
{
maxindex = i;
}
}
if (maxindex!=j)
{
temp = a[maxindex];
a[maxindex] = a[j];
a[j] = temp;
}
}
for (int i = 0; i<10; i++)
printf("%d ", a[i]);
}

3.插入排序法

c语言:简单排序:冒泡排序法、选择排序法、插入排序法(待写)的更多相关文章

  1. C语音中最简单的排序冒泡排序和选择排序代码实现(非指针)

    #include<stdio.h> int main() { int a[5] = { 2,5,7,3,-1 }; int n = sizeof(a) / sizeof(a[0]);//元 ...

  2. Java数据结构和算法总结-冒泡排序、选择排序、插入排序算法分析

    前言:排序在算法中的地位自然不必多说,在许多工作中都用到了排序,就像学生成绩统计名次.商城商品销量排名.新闻的搜索热度排名等等.也正因为排序的应用范围如此之广,引起了许多人深入研究它的兴趣,直至今天, ...

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

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

  4. 冒泡排序和选择排序(Go语言实现)

    冒泡排序和选择排序是排序算法中比较简单和容易实现的算法.冒泡排序的思想为:每一次排序过程,通过相邻元素的交换,将当前没有排好序中的最大(小)移到数组的最右(左)端.而选择排序的思想也很直观:每一次排序 ...

  5. php排序介绍_冒泡排序_选择排序法_插入排序法_快速排序法

    这里我们介绍一些常用的排序方法,排序是一个程序员的基本功,所谓排序就是对一组数据,按照某个顺序排列的过程. 充效率看 冒泡排序法<选择排序法<插入排序法 排序分两大类: 内部排序法 交换式 ...

  6. Java 快速排序法 冒泡排序法 选择排序法 插入排序法

    1.快速排序的原理: 选择一个关键值作为基准值.比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的). 从后往前比较,用基准值和最后一个值比较,如果比基准值小的交换位置,如果 ...

  7. python中对列表元素大小排序(冒泡排序法和选择排序法)

    前言:排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列.本文主要讲述python中经常用的两种排序算法,选择排序法 ...

  8. C语言之冒泡排序、选择排序、折半查询、进制查表

    菜单导航 1.冒泡排序 2.选择排序 3.折半查询 4.进制查表(十进制转二进制.八进制.十六进制) 一.冒泡排序 //1.冒泡排序 /** 一组无序数字,进行从小到大排序 冒泡排序的过程:就是每个循 ...

  9. C语言数组排序——冒泡排序、选择排序、插入排序

    一.冒泡排序 原理解析:(以从小到大排序为例)在一排数字中,将第一个与第二个比较大小,如果后面的数比前面的小,则交换他们的位置. 然后比较第二.第三个……直到比较第n-1个和第n个,此时,每一次比较都 ...

  10. 牛客网Java刷题知识点之插入排序(直接插入排序和希尔排序)、选择排序(直接选择排序和堆排序)、冒泡排序、快速排序、归并排序和基数排序(博主推荐)

    不多说,直接上干货! 插入排序包括直接插入排序.希尔排序. 1.直接插入排序: 如何写成代码: 首先设定插入次数,即循环次数,for(int i=1;i<length;i++),1个数的那次不用 ...

随机推荐

  1. mtcp的快速编译(连接)

    mtcp的快速编译 http://mos.kaist.edu/guide/config/03_build_mtcp.html 介绍DPDK中使用mtcp的文档 https://dpdksummit.c ...

  2. appache压力测试

    apache自带压力工具测试说明: Usage: ab [options] [http[s]://]hostname[:port]/pathOptions are: -n requests Numbe ...

  3. BZOJ1801或洛谷2051 [AHOI2009]中国象棋

    BZOJ原题链接 洛谷原题链接 这题挺难想状态的,刚看题感觉是状压,但数据\(100\)显然不可能. 注意到每行每列只能放\(0\sim 2\)个棋子,所以我们可以将这个写入状态. 设\(f[i][j ...

  4. nodejs 如何操作字节在内存中的位置问题 BE LE

    上代码 function testNumber() { var arr = new Int32Array(1); arr[0] = 1234; var buf1 = Buffer.from(arr); ...

  5. ICS 组件 for lazarus 1.0.12

    http://files.cnblogs.com/stevenlaz/ICS_for_lazarus_1012.zip RT 需要的下

  6. 神啊!PS是你这样用的吗?

    对于古典油画名作,人们总是持欣赏的态度去观看.能流传至今的作品,也都是当时的名作. 不过,乌克兰艺术家 Alexey Kondakov 却不是这样的,在他手中,那些世界名画也不过是他恶搞的素材罢了. ...

  7. px转rem

    第一步: 第二步:html引入js 第三步:转换单位,100px=0.1rem

  8. [Groovy] 创建Excel,追加Excel

    package ScriptLibrary import java.awt.Color import java.awt.GraphicsConfiguration.DefaultBufferCapab ...

  9. Spring 系列教程之自定义标签的解析

    Spring 系列教程之自定义标签的解析 在之前的章节中,我们提到了在 Spring 中存在默认标签与自定义标签两种,而在上一章节中我们分析了 Spring 中对默认标签的解析过程,相信大家一定已经有 ...

  10. 专访UI中国认证设计师卤大湿 | 一位UI大师关于UI设计的思考

    现如今,设计师可以说是一个自带光环的Title,很多深藏不漏的UI设计师们都在以自己的方式为产品设计做出贡献,卤大湿便是这其中之一. 精分青年卤大湿,这个在UI中国上是张酷酷的鲁迅头像的UI设计师,是 ...