C语言数据结构 快速排序实例详解

一、快速排序简介

快速排序采用分治的思想,第一趟先将一串数字分为两部分,第一部分的数值都比第二部分要小,然后按照这种方法,依次对两边的数据进行排序。

二、代码实现

#include

/* 将两个数据交换 */

void swap(int* Ina , int* Inb)

{

int temp = *Ina;

*Ina = *Inb;

*Inb = temp;

}

/* 进行一趟的快速排序,把一个序列分为两个部分 */

int getPartion(int* InArry,int InBegin,int InEnd)

{

/* 刚开始的分隔线是第一个 */

int part = InBegin;

int index = 0;

if(InEnd >= InBegin)

{

part = InBegin;

for(index = InBegin+1; index <= InEnd; index++)

{

if(InArry[InBegin] >= InArry[index])

{

/* 交换位置 */

swap(&InArry[part+1],&InArry[index]);

part++;

}

}

/* 把第一个数放到part处去 */

swap(&InArry[InBegin],&InArry[part]);

return part;

}

}

/* 快速排序函数

* InArry:输入的数组

* InBegin:数组的开始

* InEnd:数组的结束

*/

void quickSort(int* InArry,int InBegin,int InEnd)

{

if(InArry == NULL || InEnd <= InBegin)

{

return;

}

int part = 0;

part = getPartion(InArry,InBegin,InEnd);

/* 递归调用 */

quickSort(InArry,0,part-1);

quickSort(InArry,part+1,InEnd);

}

int main()

{

int a[] = {49,38,65,97,76,13,27};

int index = 0;

int len = sizeof(a)/sizeof(int);

/* 先遍历打印一下数组的元素 */

for(index = 0; index < len; index++)

{

printf("%d ",a[index]);

}

printf("\n");

/* 调用快速排序函数 */

quickSort(a,0,len-1);

/* 再遍历打印一下数组的元素 */

for(index = 0; index < len; index++)

{

printf("%d ",a[index]);

}

printf("\n");

return 0;

}

以上就是使用C语言数据结构 快速排序的实例详解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站 的支持!

用数据结构c语言写成绩排序,C语言数据结构 快速排序实例详解相关推荐

  1. java语言写购物车_JavaWeb后台购物车类实现代码详解

    相信大家肯定都在电商网站买过东西,当我们看中一件喜欢又想买的东西时,这时候你又不想这么快结账,这时候你就可以放入购物车: 就像我们平时去超市买东西一样,会推着购物车去买东西: 那么我们接下来看看jav ...

  2. python画直方图成绩分析-python plotly绘制直方图实例详解

    计算数值出现的次数 import cufflinks as cf cf.go_offline() import numpy as np import pandas as pd set_slippage ...

  3. android的时间代码怎么写,Android 日期和时间的使用实例详解

    Android 日期和时间的使用 日期和时间的使用: 1:弹出框TimePickerDialog,DatePickerDialog 2:组件TimePicker,DatePicker TimePick ...

  4. c语言pair的用法,C++ pair的用法实例详解

    C++ pair的用法实例详解 1 pair的应用 pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存.另一个应用是,当 ...

  5. 用C语言学生成绩数据库排序功能设计,[c语言学生成绩管理系统]C语言学生成绩管理系统实验报告...

    篇一 : C语言学生成绩管理系统实验报告 实 验 四:结构体(6学时) 实验目的: 1.更加灵活的使用数组作为函数参数: 2.初步掌握开发一个小型实用系统的基本方法: 3.初步掌握书写程序设计开发文档 ...

  6. c语言编译器_学C语言写自己的K语言:编译器词法分析。

    词法分析(lexical analysis),是计算机科学中将字符序列转换为记录(Token)序列化的过程.词法分析一般分手动与自动,自动是基于lex,flex词法分析器使用正则式来配置,我们这里将学 ...

  7. c语言编程 输入螺旋数组,C语言 经典题目螺旋矩阵 实例详解

    C语言 经典题目螺旋矩阵 实例详解 C语言 经典题目螺旋矩阵 //N阶螺旋矩阵 #include #include int main() { int N,i,j,n,num=1; int a[10][ ...

  8. c语言二级指针有什么作用,C语言中二级指针的实例详解

    C语言中二级指针的实例详解 C语言中二级指针的实例详解 用图说明 示例代码: #include int main(int argc, const char * argv[]) { // int a = ...

  9. C语言字符集中可显示字符,C++_C语言转义字符实例详解,在字符集中,有一类字符具有 - phpStudy...

    C语言转义字符实例详解 在字符集中,有一类字符具有这样的特性:当从键盘上输入这个字符时,显示器上就可以显示这个字符,即输入什么就显示什么.这类字符称为可显示字符,如a.b.c.$.+和空格符等都是可显 ...

最新文章

  1. synchronize
  2. 公司A、公司B、公司C……
  3. log4j按天生成且有按照文件大小分割_论文阅读TGM:轨迹生成
  4. 软件项目风险评估报告00
  5. ipa在线安装搭建_三种越狱工具安装方法
  6. Hibernate学习笔记!
  7. Overfeat图片分类、定位、检测
  8. access建立er图_ER图的构建
  9. 超详细中文车牌识别开源库EasyPR入门实战(win10_VS2019_opencv34)
  10. DNN硬件加速器设计3 -- DNN Accelerators(MIT)
  11. 属性子集选择的基本启发方法_【数据挖掘笔记三】数据预处理
  12. GitHub Top 45:新手入门 Python,值得推荐的优质资源!
  13. 电脑公司GHOST WIN7 SP1 2011装机旗舰版
  14. 专业Java报表工具Stimulsoft Reports.Java常见问题解答
  15. Kafka学习——基于已有zookeeper集群实现kafka的集成
  16. android vitamio集成教程,集成Vitamio实现万能播放器(示例代码)
  17. 云计算厂商决战2020:虽分高下,但不决生死
  18. 智慧园区物业可视化大屏
  19. Mysql GEOHASH function 实现
  20. 分享几个好用到爆的 Python 内置模块

热门文章

  1. python合并路径和文件名_Python实例 分割路径和文件名
  2. 中有atoi函数吗_C++ 多态的实现及原理,深挖vptr指针,手动调用虚函数
  3. 基于abtest思想的流量切换(nginx lua redis)
  4. python怎么写入到文件中_Python学习笔记之将数据写入到文件中
  5. guid java_JAVA实现生成GUID的方法
  6. 列举python中可变数据类型_python 可变数据类型 和 不可变数据类型
  7. mysql 5.6.14 win32_mysql-5.6.14-win32为免安装解压缩版
  8. php连接mysql的方式_php有几种连接mysql的方法
  9. java编程思想泛型对混入的详细探讨
  10. python自动测试v_python下selenium自动化测试自我实践