#pragma once//如果写头文件   放置头文件重复包含
#include<stdio.h> //定义类型 结构体类型定义 //宏定义 #define
//函数申明 void printArr(int arr[], int len);//参数数组名和数组大小 打印一个数组里面所有内容
void bulletSort(int arr[], int len);//冒泡排序
void selectSort(int arr[], int len);//选择排序
void insertSort(int arr[], int len);//插入排序
void quickSort(int arr[], int left, int right);//快速排序

sort.c

 #include"sort.h"
void printArr(int arr[], int len)
{
for (int i = ; i < len; ++i)
{
printf("%d\t", arr[i]);
}
printf("\n");
}
void bulletSort(int arr[], int len)
{
int temp;
for (int i = ; i < len - ; ++i)//循环操作的次数
{
//从前往后进行比较 顺序不合适交换位置
for (int j = ; j < len--i; j++)
{ //这里-i的目的是因为 比较一轮之后有一数字沉底 这个数字不在参与后续的比较
if (arr[j]>arr[j + ])//前面比后面大 最后从小到大的顺序
{
//交换两个元素的位置
temp = arr[j];
arr[j] = arr[j + ];
arr[j + ] = temp;
}
}
}
}
void selectSort(int arr[], int len)//选择排序
{
//如果10个数据 选择9次
int k,temp;
for (int i = ; i < len - ; ++i)
{
//从生效的元素中选择一个最小的和arr[i]进行交换
k = i;
for (int j = i + ; j < len; j++)
{
if (arr[j] < arr[k])
{
k = j;//k保存最小元素的下标
}
}
//用最小元素 arr[k] 和arr[i]交换
temp = arr[k];
arr[k] = arr[i];
arr[i] = temp; }
}
void insertSort(int arr[], int len)
{
int temp,j;
for (int i = ; i < len; i++)//第一个元素 视为有序 后面的元素一个个插入进来
{
//一步一步插入的步骤
temp = arr[i];
j = i - ;
while (j >= && arr[j]>temp)
{
arr[j + ] = arr[j];//把这个数据往后拖
j--;
}
arr[j + ] = temp;
} }
void quickSort(int arr[], int left, int right)//排序[left,right]这个区间的元素
{
if (left >= right) return;//只有一个元素不排
int temp, i = left, j = right;
while (i<j)
{
while (i<j&&arr[j] >= arr[left]) --j;
while (i<j&&arr[i]<arr[left]) ++i;
if (i<j)
{
//交换arr[i] arr[j];
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
//交换arr[i]和arr[left]
temp = arr[i];
arr[i] = arr[left];
arr[left] = temp; quickSort(arr, left, i - );//排左边
quickSort(arr, i + , right);//排右边
}

排序.c

 /*
复习 预处理命令--------------------------
1.宏定义
#define PI 3.141592654 文本替换 替换常用内容
#define ADD(a,b) ((a)+(b)) 带参数的文本替换 防止替换之后优先级出现问题
2.头文件包含
#include<头文件> 如果系统自带 那么用<>
#include"头文件" 如果自己写 那么用" " 你需要用到什么样的函数 需要#include 去包含它的头文件 目的 函数--->拆成多个文件 拆开之后如何使用
3.条件编译
通过宏去判断使用的字符集
通过宏 判断用的什么环境....
#ifndef 宏 #endif
#if 0
#endif
新内容 排序算法-------------------------- 算法 一组乱序数据 变成有--->排序 一类问题 成绩从高到低排序
百度 根据热度进行排序(广告投放) 一类问题 可能不止有一种算法
评判算法的好坏 时间复杂度和空间复杂度 需要排序100个数据 排序10个数据 排序n个数据 --->时间和n的关系 空间和n的关系 算法和编程语言 算法-->方法 可以用c原因写代码 也可以是其他语言
算法和数据结构 排序 数据进行排序 数据的存放方式 影响代码的实现和效率
int a,b,c;
int arr[3]; 数据结构 组织和存放数据的方式 作用 管理数据 --->影响操作方式
算法 处理数据 算法+数据结构 同一种算法 最后写出的代码可能不一样
1.冒泡 从头到尾比较练歌相邻的元素 如果顺序和要排序的方式不一样 就交换
两个元素 比较一轮之后会让最大的数字沉底
2.选择 每次从剩下的元素中找到最小的 和前面的元素进行交换
3.插入
4.快速 从小到大的方式进行排序
*/ #include<stdio.h>
#include"sort.h"
int main()
{
int arr[] = { , , , , , , , , , };
//bulletSort(arr, 10);//冒泡排序
//selectSort(arr, 10);//选择排序
//insertSort(arr, 10);//插入排序
quickSort(arr,, );//快速排序
printArr(arr, );//输出
getchar();
return ;
}

c排序的更多相关文章

  1. javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈

    Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...

  2. iOS可视化动态绘制八种排序过程

    前面几篇博客都是关于排序的,在之前陆陆续续发布的博客中,我们先后介绍了冒泡排序.选择排序.插入排序.希尔排序.堆排序.归并排序以及快速排序.俗话说的好,做事儿要善始善终,本篇博客就算是对之前那几篇博客 ...

  3. JavaScript实现常用的排序算法

    ▓▓▓▓▓▓ 大致介绍 由于最近要考试复习,所以学习js的时间少了 -_-||,考试完还会继续的努力学习,这次用原生的JavaScript实现以前学习的常用的排序算法,有冒泡排序.快速排序.直接插入排 ...

  4. [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序

    用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html  目录 马桶排序(令人 ...

  5. 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)

    本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...

  6. 算法与数据结构(七) AOV网的拓扑排序

    今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的.拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍: AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...

  7. 使用po模式读取豆瓣读书最受关注的书籍,取出标题、评分、评论、题材 按评分从小到大排序并输出到txt文件中

    #coding=utf-8from time import sleepimport unittestfrom selenium import webdriverfrom selenium.webdri ...

  8. javascript排序

    利用array中的sort()排序 w3cfunction sortNumber(a,b) { return a - b } var arr = new Array(6) arr[0] = " ...

  9. iOS自定义model排序

    在开发过程中,可能需要按照model的某种属性排序. 1.自定义model @interface Person : NSObject @property (nonatomic,copy) NSStri ...

  10. Lucene4.4.0 开发之排序

    排序是对于全文检索来言是一个必不可少的功能,在实际运用中,排序功能能在某些时候给我们带来很大的方便,比如在淘宝,京东等一些电商网站我们可能通过排序来快速找到价格最便宜的商品,或者通过排序来找到评论数最 ...

随机推荐

  1. sudo ln -sf libhiredis.so.0.10 libhiredis.so.0

    which ldconfig sudo ln -sf libhiredis.so.0.10 libhiredis.so.0

  2. 五分钟部署一套完整的Zabbix

    Zabbix-安装与使用 安装NTP yum install -y ntp 配置ntp.conf cd /etc/ vim ntp.conf # 打开之后讲一下内容添加 server cn.ntp.o ...

  3. 全栈工程师知识点汇总——html5(上)

    一.HTML5 1.新特性: 1. 取消了过时的显示效果标记 <font></font> 和 <center></center> ... 2. 新表单元 ...

  4. 个人永久性免费-Excel催化剂功能第95波-地图数据挖宝之IP地址转地理地址及不同经纬度版本转换

    经过上一波POI兴趣点查询后,地图数据挖宝也接近尾声,这次介绍在数据采集.准备过程中需要用到的一些转换功能,有IP地址转换地理地址及不同地图版本的经纬度转换. 背景知识 在电商.网络的数据分析过程中, ...

  5. Masstransit的应用服务总线

    Masstransit 是一个非常优秀的基于消息进行通信的分布式应用程序框架,详情参考官网. 在介绍AA.ServiceBus之前,先介绍下几个概念. 分布式 分布式系统如何定义?这里引用一下Dist ...

  6. layui上传Excel更新数据并下载

    前言: 最近做项目遇到了一个需求,上传Excel获取数据更新Excel文档,并直接返回更新完的Excel到前端下载:其实需求并没有什么问题,关键是前端用到的是layui上传组件(layui.uploa ...

  7. python语言快捷注释

    1.注释单行 (1)方法1:直接在单行代码前边加 # (2)方法2:选中需要注释的代码,Ctrl+/ 即可注释 2.注释多行代码 选中想要注释的N行代码,直接Ctrl+/ 即可注释 3.取消注释多行代 ...

  8. TCP加速机制是如何加速的?

    一.什么是TCP加速?   TCP加速就是在高时延链路提高吞吐量的一系列解决方案.   二.为什么需要对TCP进行加速?   1.传统的TCP拥塞控制算法并不适用于高时延.高误码的链路. 2.随着we ...

  9. CF803D 题解

    题面 正解:一道二分大水题! A:为什么我得不到满分? B : 评测的系统不一样啊! A : 蛤? 正常情况下我们日常练习均使用的是windows系统,在windows下,string 本身是可以存储 ...

  10. 9-2、大型项目的接口自动化实践记录----递归判断两个json串是否相等

    1.已知json串构成的情况下判断 先构造一下场景,假设已经把各个数据都移除掉不对比的字段 图1 预期.实际结果,复杂接口返回多层嵌套json时,同下 图2 预期.实际结果值为:{child_json ...