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

  1. 简单交换法排序

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

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. grunt 相关知识

    /** * Created by lee on 2014.07.02 002. */ module.exports = function (grunt) { // 项目配置 grunt.initCon ...

  2. php获取本地IP

    function get_local_ip() { $preg = "/\A((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3 ...

  3. delphi =------报错

    关于delphi软件运行出现Invalid floating point operation的错误的解决办法 关于delphi软件运行出现Invalid floating point operatio ...

  4. Oracle Schema Objects——Tables——Table Compression

    Oracle Schema Objects Table Compression 表压缩 The database can use table compression to reduce the amo ...

  5. <2014 04 16> 上班实习第一天

    找了家开发3D printer的创业公司实习,做(嵌入式)软件工程师.今天第一天. 1.熟悉了基于SLA技术的3D打印机的主要关键问题,机械结构. 控制系统是基于PC-Clinet和一个树莓派ARM/ ...

  6. 服务不支持 chkconfig 的解决方法

    系统服务,在chkconfig --add  servername的时候老是提示服务不支持 chkconfig,经过查找,解决办法如下. 示例,auto_run的前三行如下:#!/bin/sh#chk ...

  7. 【查看版本】查看linux版本/查看32还是64

    系统/机器信息 1.查看linux是ubuntu还是centos lsb_release --help -a 打印所有信息 -s 简短打印 2.查看系统是64还是32 uname --help -a ...

  8. make编译五

    Make的运行 有时候,我们不想让我们的makefile 中的规则执行起来,我们只想检查一下我们的命令,或是执行的序列.于是我们可以使用make 命令的下述参数: “-n” “--just-print ...

  9. tomcat访问管理页面出现:403 Access Denied 解决方法

    点击红色框框出现以下403错误 打开context.xml文件 vim /usr/local/tomcat/webapps/manager/META-INF/context.xml <Conte ...

  10. 初识ganglia

    本文地址:http://www.cnblogs.com/qiaoyihang/ 一.Ganglia是什么?Ganglia主要用来解决什么样的问题? ganglia是一个可扩展的分布式监控系统,用于监控 ...