#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. vs项目依赖项黄色感叹号解决方案

    右键项目解决方案,生成解决方案或重新生成解决方案,黄色感叹号消失,依赖项生效,亲测有效

  2. 通过windug判断某个模块导致程序不能退出。

    1.windug附加进程. 2.~* kb 3.看堆栈

  3. 个人永久性免费-Excel催化剂功能第40波-工资、年终奖个人所得税计算函数

    学Excel的表哥表姐们必定有接触过个人所得税的案例学习,在计算个人所得税这个需求上,大家的层次也是很多种多样,当然Excel催化剂推荐的方式仍然是经过封装后的简单明了的自定义函数的方式,此篇已为财务 ...

  4. 个人永久性免费-Excel催化剂功能第31波-数量金额分组凑数功能,财务表哥表姐最爱

    在财务工作过程中,很大时候需要使用到凑数的需求,花了两三天时间认真研究了一下,本人水平也只能做代码搬运工,在用户体验上作了一下完善.完成了Excel版的凑数功能. 文章出处说明 原文在简书上发表,再同 ...

  5. Spring_AOP基于AspectJ的注解开发&JDBC的模板使用&事务管理(学习笔记3)

    一:AOP基于AspectJ的注解开发 1,简单的实例: 1)引入相应的jar包 ​ 2)在配置文件里引入相关约束 <beans xmlns="http://www.springfra ...

  6. C#3.0新增功能03 隐式类型本地变量

    连载目录    [已更新最新开发文章,点击查看详细] 从 Visual C# 3.0 开始,在方法范围内声明的变量可以具有隐式“类型”var. 隐式类型本地变量为强类型,就像用户已经自行声明该类型,但 ...

  7. Linux EXT2 文件系统

    磁盘是用来储文件的,但是必须先把磁盘格式化为某种格式的文件系统,才能存储文件.文件系统的目的就是组织和管理磁盘中的文件.在 Linux 系统中,最长见的是 ext2 系列的文件系统.其早期版本为 ex ...

  8. Pow共识算法

    谈到哈希算法,每个程序员都不陌生,但是谈到比特币共识算法PoW,如果没有接触过的技术人员可能觉得应该会很复杂,毕竟全球的比特币节点数量如此庞大,达成共识的算法应该不会很简单.但其实如果你已掌握哈希算法 ...

  9. python 实现爬取网站下所有URL

    python3 实现爬取网站下所有URL 获取首页元素信息: 首页的URL链接获取: 遍历第一次返回的结果: 递归循环遍历: 全部代码如下: 小结: python3.6 requests && ...

  10. Spring源码解析——循环依赖的解决方案

    一.前言 承接<Spring源码解析--创建bean>.<Spring源码解析--创建bean的实例>,我们今天接着聊聊,循环依赖的解决方案,即创建bean的ObjectFac ...