快速排序(Quick Sort)的C语言实现
- 设立枢轴,将比枢轴小的记录移到低端,比枢轴大的记录移到高端,直到low=high停止
- 分别对枢轴低高端部分再次快速排序(即重复第1步)
- 重复第1、2步,直到low=high停止
C语言实现(编译器Dev-c++5.4.0,源代码后缀.cpp)
原创文章,转载请注明来自钢铁侠Mac博客http://www.cnblogs.com/gangtiexia
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 6
#define OK 1
#define ERROR 0 typedef int Status;
typedef int KeyType;
typedef char InfoType;//要malloc() typedef struct{
KeyType score;
InfoType name[];
}RedType;//记录类型 typedef struct{
RedType r[MAXSIZE+];
int length;
}SqList;
/*
Name: 初始化
Copyright:
Author: leo
Date: 10-12-15 16:54
Description: 初始化顺序表
*/ Status initSqList(SqList &l){
l.length=MAXSIZE;
printf("%d",l.length);
for(int i=;i<=l.length;i++){
printf("请输入第%d个同学的名字和分数",i);
gets(l.r[i].name);
scanf("%d",&(l.r[i].score));
getchar();
printf("\n");
} return OK;
}
/*
Name: 部分排序
Copyright: http://www.cnblogs.com/gangtiexia
Author: 钢铁侠
Date: 10-12-15 17:00
Description: 反复按照枢轴进行快速排序:将比枢轴大的放在一边,比枢轴小的放在另一边
*/ int partition(SqList &l,int low,int high){
l.r[]=l.r[low];//枢轴
while(low<high){
while(low<high&&l.r[high].score>l.r[].score) high--;
l.r[low]=l.r[high];
while(low<high&&l.r[low].score<l.r[].score) {
printf("\nhigh为%d\n",high);
low++;}
l.r[high]=l.r[low];
}
l.r[low]=l.r[];
return low;
} /*
Name: 启动递归快速排序
Copyright: http://www.cnblogs.com/gangtiexia
Author: 钢铁侠
Date: 11-12-15 14:37
Description: 启动递归快速排序,并进行第一个大部分(所有记录)的快速排序
*/ Status QuickSort(SqList &l,int low,int high){
int pivotloc;
if(low<high){
pivotloc=partition(l,low,high);
QuickSort(l,low,pivotloc-);
QuickSort(l,pivotloc+,high);
}
return OK;
} Status Traverse(SqList &l){
for(int i=;i<=MAXSIZE;i++)
{
printf("%s的分数为%d \n",l.r[i].name,l.r[i].score);
}
} int main(){ SqList L;
initSqList(L);
printf("L.length为%d",L.length);
QuickSort(L,,L.length);
Traverse(L);
return ;
}
快速排序(Quick Sort)的C语言实现的更多相关文章
- [算法] 快速排序 Quick Sort
快速排序(Quick Sort)使用分治法策略. 它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分:其中一部分的所有数据都比另外一部分的所有数据都要小.然后,再按此方法对这 ...
- 基础排序算法之快速排序(Quick Sort)
快速排序(Quick Sort)同样是使用了分治法的思想,相比于其他的排序方法,它所用到的空间更少,因为其可以实现原地排序.同时如果随机选取中心枢(pivot),它也是一个随机算法.最重要的是,快速排 ...
- 快速排序Quick sort
快速排序Quick sort 原理,通过一趟扫描将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归 ...
- Java中的经典算法之快速排序(Quick Sort)
Java中的经典算法之快速排序(Quick Sort) 快速排序的思想 基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小, 然后再按此方法对 ...
- 快速排序(Quick Sort)C语言
已知数组 src 如下: [5, 3, 7, 6, 4, 1, 0, 2, 9, 10, 8] 快速排序1 在数组 src[low, high] 中,取 src[low] 作为 关键字(key) . ...
- quicksort 快速排序 quick sort
* Java基本版 package cn.mediamix; import java.util.LinkedList; public class QuickSort { public static v ...
- 排序算法 - 快速排序(Quick Sort)
算法思想 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序.它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod). (1) 分治法的基本思想 ...
- 快速排序算法回顾 --冒泡排序Bubble Sort和快速排序Quick Sort(Python实现)
冒泡排序的过程是首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序,则将两个记录交换,然后比较第二个记录和第三个记录的关键字.以此类推,直至第n-1个记录和第n个记录的关键字进行过比较为止 ...
- 基础算法之快速排序Quick Sort
原理 快速排序(Quicksort)是对冒泡排序的一种改进. 从数列中挑出一个元素,称为"基准"(pivot); 排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的 ...
- 快速排序——Quick Sort
基本思想:(分治) 先从数列中取出一个数作为key值: 将比这个数小的数全部放在它的左边,大于或等于它的数全部放在它的右边: 对左右两个小数列重复第二步,直至各区间只有1个数. 辅助理解:挖坑填数 初 ...
随机推荐
- LeetCode--判断二叉树是否对称
主要是检查该二叉树是否是自己的一个镜像(也就是以中心轴对称的) 举例来说,下面显示的就是一个对称的二叉树 1 / \ 2 2 / \ / \ 3 4 4 3 下面显示的就不是一个对称的二叉树了 1 / ...
- ubuntu12编译openwrt
搭建编译环境 Ubuntu x64 12.04下的命令: sudo apt-get install subversion sudo apt-get install git sudo apt-get i ...
- getting start with storm 翻译 第八章 part-2
转载请注明出处:http://blog.csdn.net/lonelytrooper/article/details/12435641 The Bolts 首先我们看一下该topology中的标准bo ...
- Python进程、线程、协程详解
进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配.任务的调度. ...
- HDU--杭电--1253--胜利大逃亡--广搜
胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- random.sample
import random k = random.sample(xrange(0x41, 0x5b), 26) print k import random k = random.sample(xran ...
- MySQL Replication, 主从和双主配置
MySQL Replication, 主从和双主配置 MySQL的Replication是一种多个MySQL的数据库做主从同步的方案,特点是异步,广泛用在各种对MySQL有更高性能,更高可靠性要求的场 ...
- 第一篇:Power BI数据可视化概述
前言 "可视化之工具,可爱者甚蕃.统计学家独爱R,自Python来,世人盛爱matplotlib.余独爱Power BI之出微软而不染(免费),濯Office而不妖(够精简).......& ...
- Android系统移植与驱动开发——第七章——LED驱动
LED驱动的实现原理 编写LED驱动: 测试LED驱动之前需要用USB数据线连接开发板,然后打开电源,成功启动之后,执行build.sh脚本文件编译和安装LED驱动,顺利则会自动连接 如果有多个设备文 ...
- centos 安装nginx
centos 安装nginx 安装依赖 更换源 yum install http://mirrors.163.com/centos/6.8/extras/x86_64/Packages/epel-re ...