C语言排序算法之简单交换法排序,直接选择排序,冒泡排序,最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些。

  1. 简单交换法排序

    1. /*简单交换法排序
    2. 根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置
    3. 交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动
    4. 不稳定
    5. */
    6. #include<windows.h>
    7. #include<stdio.h>
    8. void main(){
    9. int i,j,arr[]={,,,,,,,,,},t;
    10. int size = sizeof(arr)/sizeof(int);//计算数组的大小
    11. for(i = ;i< size-;i++){//n个数进行n-1轮比较
    12. for(j = i+;j< size;j++)//每一轮比较时,后面的数与i为下标的数比较
    13. if(arr[j]<arr[i]){//如果i为下标的数比后面的一个数大,将两个数交换位置
    14. t=arr[j];
    15. arr[j]=arr[i];
    16. arr[i]=t;
    17. }
    18. }
    19.  
    20. for(i = ;i< size;i++){//输出
    21. printf("%d ",arr[i]);
    22. }
    23.  
    24. system("pause");
    25. }
  2. 直接选择排序
    1. /*选择排序
    2. 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
    3. 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)
    4. */
    5. #include<windows.h>
    6. #include<stdio.h>
    7. void main(){
    8. int min,i,j,arr[]={,,,,,,,,,},t;
    9. int size = sizeof(arr)/sizeof(int);//计算数组的大小
    10. for(i = ; i< size-;i++){//n个数进行n-1轮比较
    11. min = i;//每一轮假定i为下标的这个数为最小值,记录下标
    12. for(j = i+;j < size;j++)//每一轮比较时,后面的数与min为下标的数比较
    13. if(arr[j]<arr[min]) min = j;//后面的数比min为下标的数小,更换min
    14. if(min != i){//如果min的值发生了变化即当前下标为i的数不是最小值,交换
    15. t = arr[i];
    16. arr[i]=arr[min];
    17. arr[min] = t;
    18. }
    19. }
    20.  
    21. for(i = ;i< size;i++){//输出
    22. printf("%d ",arr[i]);
    23. }
    24.  
    25. system("pause");
    26.  
    27. }
  3. 冒泡排序
    1. /*冒泡排序
    2. 重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。
    3. 走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成
    4. */
    5. #include<windows.h>
    6. #include<stdio.h>
    7. void main(){
    8. int min,i,j,arr[]={,,,,,,,,,},t,noswap;
    9. int size = sizeof(arr)/sizeof(int);//计算数组的大小
    10. for(i = ; i< size-;i++){//n个数进行n-1轮比较
    11. noswap = ;//标记是否发生交换,以避免对已经有序的序列再排序
    12. for(j = ;j<size--i;j++){
    13. if(arr[j]>arr[j+]){//如果前一个数比后一个数大,交换
    14. t=arr[j];
    15. arr[j]=arr[j+];
    16. arr[j+]=t;
    17. noswap = ;//发生了交换
    18. }
    19. }
    20.  
    21. if(noswap) break; //没有发生交换,说明已经有序,无需再排序,退出循环
    22. }
    23.  
    24. for(i = ;i< size;i++){//输出
    25. printf("%d ",arr[i]);
    26. }
    27.  
    28. system("pause");
    29.  
    30. }

C语言排序算法之简单交换法排序,直接选择排序,冒泡排序的更多相关文章

  1. 排序算法Java代码实现(一)—— 选择排序

    以下几篇随笔都是记录的我实现八大排序的代码,主要是贴出代码吧,讲解什么的都没有,主要是为了方便我自己复习,哈哈,如果看不明白,也不要说我坑哦! 本片分为两部分代码: 常用方法封装 排序算法里需要频繁使 ...

  2. Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...

  3. [java初探06]__排序算法的简单认识

    今天,准备填完昨天没填的坑,将排序算法方面的知识系统的学习一下,但是在简单的了解了一下后,有些不知如何组织学习了,因为排序算法的种类,实在是太多了,各有优略,各有适用的场景.有些不知所措,从何开始. ...

  4. Java常用排序算法+程序员必须掌握的8大排序算法

    概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 我们这里说说八大排序就是内部排序. 当n较大, ...

  5. Java 常用排序算法/程序员必须掌握的 8大排序算法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...

  6. 几种常见排序算法之Java实现(插入排序、希尔排序、冒泡排序、快速排序、选择排序、归并排序)

    排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列. 稳定度(稳定性)一个排序算法是稳定的,就是当有两个相等记录的关 ...

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

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

  8. Java学习笔记——排序算法之简单排序

    男儿何不带吴钩,收取关山五十州.请君暂上凌烟阁,若个书生万户侯? --南园十三首 三种排序法: 1.冒泡法 2.简单选择法 3.直接插入法   上代码: 1.冒泡排序 public class Bub ...

  9. [转]Java 常用排序算法/程序员必须掌握的 8大排序算法

    本文转自:http://www.cnblogs.com/qqzy168/archive/2013/08/03/3219201.html 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插 ...

随机推荐

  1. [LintCode] 二叉树的后序遍历

    The recursive solution is trivial and I omit it here. Iterative Solution using Stack (O(n) time and  ...

  2. HDU 1879 继续畅通工程(Kruskra)

    继续畅通工程 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  3. Windows File 管理工具:junction And Subinacl

    junction.exe   是 Sysinternals 出品的命令行工具.使用前建议将其复制到%SystemRoot%/system32目录下 创建一个名为 D:/LINK 的[junction ...

  4. pre 布局

    w

  5. iMessenger 2.0.14.0801简述

    有些梦,看似遥不可及.但并非不能实现,仅仅要你足够的强!!.人力有时而穷,所以我们可能还须要一些热心人的帮助.这个人可能就是你. 四年来,我们一直在努力,从未放弃. 在我们做好一件事之前.我们永远不知 ...

  6. ansible判定文件或者文件夹是否存在

    ansible 的常用模块中没有判定当文件存在或者不存在时,执行某个执行 使用下面方法能简单判定某个文件是否存在 --- - name: judge a file or dir is exits sh ...

  7. MySQL查询操作

    查询执行路径中的组件:查询缓存.解析器.预处理器.优化器.查询执行引擎.存储引擎SELECT语句的执行流程: FROM Clause --> WHERE Clause --> GROUP ...

  8. mysql-5.6.22的安装步骤

    一.环境与下载地址: 1.系统下载地址: http://mirrors.sohu.com/centos/6.6/isos/x86_64/CentOS-6.6-x86_64-bin-DVD1.iso 2 ...

  9. 批量编译目录下文件的Makefile

    1.多C文件生成各自可执行文件的Makefile如果一个目录下有很多C文件,且每个C文件都能生成一个独立的可执行文件,那么想全编译这些C文件并生成各作的可执行文件,在该目录下编写一个Makefile文 ...

  10. 覆盖bootstrap的样式

    覆盖bootstrap的样式,很简单.在css中加上 !important 来更改自己样式的执行优先级!