快速排序_C语言_数组
快速排序_C语言_数组
#include <stdio.h>
void quickSort(int *, int, int);
int searchPos(int *, int, int);
int main(int argc, const char * argv[]) {
    //定义乱序数组
    int a[10] = {9, 3, 4, 6, 1, 2, 7, 8, 5, 0};
    //排序前输出:
    printf("乱序:\n");
    for (int i = 0; i < 10; i++) {
        printf("%d ",a[i]);
    }
    printf("\n\n");
    //排序
    quickSort(a, 0, 10);
    //排序后输出:
    printf("顺序:\n");
    for (int i = 0; i < 10; i++) {
        printf("%d ",a[i]);
    }
    printf("\n");
    return 0;
}
void quickSort(int *a, int low, int height) {
    int pos;
    if (low < height) {
        pos = searchPos(a, low, height);
        quickSort(a, low, pos - 1);
        quickSort(a, pos + 1, height);
    }
}
int searchPos(int *a, int low, int height) {
    int val = a[low];
    while (low < height) {
        while (low < height && a[height] > val) {
            height --;
        }
        a[low] = a[height];
        while (low < height && a[low] < val) {
            low ++;
        }
        a[height] = a[low];
    }
    a[low] = val;
    return low;
}
快速排序_C语言_数组的更多相关文章
- 选择排序_C语言_数组
		选择排序_C语言_数组 #include <stdio.h> void select_sort(int *); int main(int argc, const char * argv[] ... 
- 插入排序_C语言_数组
		插入排序_C语言_数组 #include <stdio.h> void insertSort(int *); int main(int argc, const char * argv[]) ... 
- 冒泡排序_C语言_数组
		冒泡排序_C语言_数组 #include <stdio.h> //冒泡排序 小->大 void sort(int * pArray, int len); int main(int a ... 
- 温故而知新_C语言_递归
		递归. 是的,差不多就是这种感觉.上面就是类似递归的显示表现. 2017 10 24更新: 递归这个问题放了很久.也没有写.大概是自己还没有好好理解吧. 在这里写下自己理解的全部. 一 何为递归. 字 ... 
- 温故而知新_C语言_前缀++(--)和后缀++(--)
		前缀++(--)和后缀++(++)是有区别的. 再单独使用的时候是没有区别的,都是自身递增或者递减1. 但是综合使用起来会一样吗? 下面的例子都是++,替换成--也是一样,道理都是一样的. 请先看下面 ... 
- 数据结构_C语言_二叉树先序、中序、后序遍历
		# include <stdio.h> # include <stdlib.h> typedef struct BiTreeNode { char data; struct B ... 
- 数据结构_C语言_单链表
		# include <stdio.h> # include <stdbool.h> # include <malloc.h> typedef int DataTyp ... 
- 【书籍下载链接】_1_第一轮_C语言书籍
		各位朋友,如果您觉得下载的电子书,看的还可以,请购买纸质版的图书,如果您觉得 您下载的书,不值得一看请在下载后直接删除. Windows汇编:http://dl.vmall.com/c0jk1v970 ... 
- 2.2 C语言_实现数据容器vector(排序功能)
		上一节我们说到我们己经实现了一般Vector可以做到的自动扩充,告诉随机存取,那么现在我们需要完成vector的一个排序的功能. 排序算法我们网上一百度哇~~!很常见的就有8大排序算法: 1.选择排序 ... 
随机推荐
- 4、Angular2 pipe
			1. stateless pipe 2.stateful pipe 
- 【转】sqlserver字符串拆分(split)方法汇总
			Java..net等开发工具具有split功能,最近在Sqlserver中碰到这个需求. 方法1:动态SQL法 ),) set @string='1,2,3,4,5,6,7,8,9,10' set @ ... 
- oracle 常用操作记录--持续更新...
			一.oracle grant 授权语句(转自:https://www.cnblogs.com/yt954437595/p/6488819.html) --select * from dba_users ... 
- mysql四:数据操作
			一.介绍 MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过SQL语句中的 ... 
- CSS3新增的伪类选择器
			伪类选择器的作用:对已有选择器做进一步的限制,对已有选择器能匹配的元素做进一步的过滤.CSS 3提供的伪类选择器主要分为以下三类: 结构性伪类选择器 UI元素状态伪类选择器 其他伪类选择器 1.结构性 ... 
- 常见的media断点
			landscape mode是指宽度比高度宽的模式,也就是俗称的宽屏模式: portrait mode是指高度比宽度高的模式,也就是俗称的竖屏模式: /*#region SmartPhones */ ... 
- 【基础笔记】tomcat安装后运行出现出现问题(the JRE_HOME environment variable is not defined correctly This environment variabl)
			之前装好tomcat后正常运行 后来重装系统后,又一次配置环境时却报错. 在网上查找了两篇文章. https://blog.csdn.net/haleyliu123/article/details/ ... 
- sql server中将自增长列归零
			一个项目完成后数据库中会有很多无用的测试数据,可以使用delete * 将数据全部删除,但自增长列(一般是主键)基数不会归零,使用TRUNCATE函数可以将表中数据全部删除,并且将自增长列基数归零.一 ... 
- day009-IO流
			什么叫流?就是数据的流动.以内存为基准,分为输入input和输出output.输入也叫做读取数据,输出也叫写出数据. 分类 按数据的流向分: 输入流.输出流 按数据类型分: 字节流.字符流 1. ... 
- java对文件操作--01
			1.删除文件 /** * delete file * 删除文件 * @param fileName * @return */ private boolean deleteDir(String file ... 
