c排序
#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排序的更多相关文章
- javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...
- iOS可视化动态绘制八种排序过程
前面几篇博客都是关于排序的,在之前陆陆续续发布的博客中,我们先后介绍了冒泡排序.选择排序.插入排序.希尔排序.堆排序.归并排序以及快速排序.俗话说的好,做事儿要善始善终,本篇博客就算是对之前那几篇博客 ...
- JavaScript实现常用的排序算法
▓▓▓▓▓▓ 大致介绍 由于最近要考试复习,所以学习js的时间少了 -_-||,考试完还会继续的努力学习,这次用原生的JavaScript实现以前学习的常用的排序算法,有冒泡排序.快速排序.直接插入排 ...
- [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序
用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html 目录 马桶排序(令人 ...
- 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)
本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...
- 算法与数据结构(七) AOV网的拓扑排序
今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的.拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍: AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...
- 使用po模式读取豆瓣读书最受关注的书籍,取出标题、评分、评论、题材 按评分从小到大排序并输出到txt文件中
#coding=utf-8from time import sleepimport unittestfrom selenium import webdriverfrom selenium.webdri ...
- javascript排序
利用array中的sort()排序 w3cfunction sortNumber(a,b) { return a - b } var arr = new Array(6) arr[0] = " ...
- iOS自定义model排序
在开发过程中,可能需要按照model的某种属性排序. 1.自定义model @interface Person : NSObject @property (nonatomic,copy) NSStri ...
- Lucene4.4.0 开发之排序
排序是对于全文检索来言是一个必不可少的功能,在实际运用中,排序功能能在某些时候给我们带来很大的方便,比如在淘宝,京东等一些电商网站我们可能通过排序来快速找到价格最便宜的商品,或者通过排序来找到评论数最 ...
随机推荐
- python 3.5学习笔记(第三章)
本章内容 1.集合及其运算 2.文件操作 3.字符编码与转码 4.函数与函数式编程 5.局部变量与全局变量 6.递归 7.补充知识点 一.集合及其运算 1.概念: set集合是一个不重复元素集,用 { ...
- VUE动态(自动)Loading【绑定到URL】,同页面多个Loading互不冲突
需求来源:当使用React时,使用 umi loading 很方便,页面对http请求发生改变时,也会自动改变loading的相关状态(true/false) 对VUE插件进行找寻,发现没找到合适内容 ...
- 小白开学Asp.Net Core《三》
小白开学Asp.Net Core<三> ——界面 我胡汉三再次又回来了(距离上篇时间有点长),今天抽时间将最近对框架采用的后台界面做个记录 1.先上图 (图一) (图二) 2.界面说明 后 ...
- nginx目录穿越漏洞复现
nginx目录穿越漏洞复现 一.漏洞描述 Nginx在配置别名(Alias)的时候,如果忘记加/,将造成一个目录穿越漏洞. 二.漏洞原理 1. 修改nginx.conf,在如下图位置添加如下配置 在如 ...
- Appium+python自动化(二十三)- 真假美猴王Monkeyrunner与Monkey傻傻的分不清楚(超详解)
简介 看<西游记>第五十七回,说是“六耳猕猴”化作孙悟空的摸样,伤了唐僧,后又和孙悟空大打出手…… 这位假孙悟空,实力不用多说了吧,和真孙悟空一般无二,大战孙悟空,闹到上天入地下海. 在唐 ...
- 二十、Sql Server 保留几位小数的两种做法
问题: 数据库里的 float momey 类型,都会精确到多位小数.但有时候 我们不需要那么精确,例如,只精确到两位有效数字. 解决: 1. 使用 Round() 函数,如 Round(@num,2 ...
- NetCore跨平台桌面框架Avalonia的OSX程序打包
虽然工作开发语言已经转到了java,但平时仍会用netcore做一些小工具,提升工作效率,但是笔记本换成了Mac,小工具只能做成命令行形式,很是痛苦,迫切需要一个.net跨平台的桌面程序解决方案. 为 ...
- python课堂整理19----迭代器和生成器
一.概念 • 迭代器协议: 对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么引起一个stopIteration异常,以终止迭代(只能往后走,不能往前退) • 协议是一种约定,pyt ...
- nodejs 获取客户端 ip 地址
应用场景: php:我们需要拿到用户客户端的ip信息,以识别用户位置,但现在我们拿到的地址永远是杭州 前端:我查一下,稍等 .... 明白了,我们加了一层 node 服务器,服务器在杭州,你们拿到的是 ...
- CentOS7 修改PATH环境变量的方法
vim /etc/profile 添加: PATH=/root/.config/composer/vendor/bin:$PATH 保存,退出,运行: source /etc/profile 检查: ...