1 利用快速排序实现从小到大排序

定义一个数组Arr 如下:

9 0 8 10 -5 2 13 7
^——————— ^
Low__________High

1、定义一个变量 val 存储 Arr[Low]的值

2、先移动High

High移动规则:
如果Arr[High]>=val,则将High位置前移,即:
--High;
9 0 8 10 -5 2 13 7
^____________ ^
Low__________High
如果Arr[High]<val,则将Arr[High]的值赋值给Arr[Low],即 Arr[Low]=Arr[High];
7 0 8 10 -5 2 13 7
^__________ ___ ^
Low___________High

3、再移动Low

Low移动规则:
如果Arr[Low]>=val,则将位置后移,即:
++Low;
7 0 8 10 -5 2 13 7
+++++^_______ ^
+++++Low_____High
如果Arr[Low]>val,则将Arr[Low]的值赋值给Arr[High],即 Arr[High]=Arr[Low];
7 0 8 10 -5 2 13 10
+++++^_______ ^
+++++Low_____High

4、继续移动High 与 Low

5、只到Low =High时,停止本次排序,并将Arr[Low]或者Arr[High]的值赋值为Val

7 0 8 10 -5 2 13 10
++++++++ ^ ^
++++++++ L H
都指向2
此时将Arr[L]=val 或者Arr[High]=val
7 0 8 10 -5 9 13 10
++++++++ ^ ^
++++++++ L H
此时,就是将9的位置找到

6、一次结束只能将val的正确位置找到

程序代码如下

#include <stdio.h>int FindPos(int *a, int low, int high);
void QuickSort(int * a, int low, int high);int main() {int a[]={1,12,5,98,14,25,36,27,10};for (int i = 0; i < sizeof(a)/sizeof(a[0]); ++i) {printf("a[%d]=%d\n",i,a[i]);}QuickSort(a,0,sizeof(a)/sizeof (a[0]));printf("排序后=======");for (int i = 0; i < sizeof(a)/sizeof(a[0]); ++i) {printf("a[%d]=%d\n",i,a[i]);}}
void QuickSort(int * a, int low, int high)
{int pos;if (low<high){pos =FindPos(a,low,high);QuickSort(a,low,pos-1);QuickSort(a,pos+1,high);}}int FindPos(int *a, int low, int high)
{int val =a[low];while (low<high){while (low<high && a[high]>=val){--high;}a[low]=a[high];while (low<high && a[low]<=val){++low;}a[high]=a[low];}a[low]=val;return low;
}

C语言快速排序(郝斌老师笔记)相关推荐

  1. 郝斌老师C语言学习笔记(一)

    在给变量分配内存时,很可能这段内存存在以前其他程序使用留下的值.当使用VC编译器,若编译器发现没有给变量赋值而使用,就会返回一个以"85"开头的很大的数字(此时该段内存中为一个垃圾 ...

  2. 郝斌老师-C语言视频教程(全180讲)

    <郝斌C语言自学教程>郝斌老师C语言自学专讲180集完整版 目录: 180_C期末考试测试题讲解 下 179_NULL的含义 178_C期末考试测试题讲解上 177_文件 宏 typede ...

  3. 【郝斌老师数据结构学习笔记 day 3】

    目录 前言 一.连续存储数组的算法演示 二.typedef 的用法 总结 前言 数据结构的学习笔记,记录第三天 一.连续存储数组的算法演示 线性结构[把所有的结点用一根直线穿起来] 连续存储[数组] ...

  4. 【郝斌老师数据结构学习笔记 day 6】

    目录 前言 一.算法 二.几种常见存储结构浅析 三.非循环单链表算法演示合集 总结 前言 数据结构的学习笔记,记录第六天 一.算法 算法: 狭义:算法和数据的存储方式密切相关 广义:算法和数据的存储方 ...

  5. 【郝斌老师数据结构学习笔记 day 7】

    目录 前言 一.栈的定义 二.栈的分类 三.栈的一些算法 四.栈的日常应用 总结 前言 数据结构的学习笔记,记录第七天 一.栈的定义 定义:一种可以实现 "先进后出" 的存储结构 ...

  6. 专业课C语言(郝斌)

    文章目录 第一章 C语言概述 第二章 C语言编程预备知识 第三章 基础知识 第四章 流程控制 选择: 第五章 循环 while do...while switch break&continue ...

  7. MOOC python语言程序设计 嵩天老师 笔记(第六周)

    1.S和T是两个集合,哪个选项对S^T的描述是正确的?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪ ...

  8. C语言郝斌视频学习一 变量为什么要初始化和一个小例子以及大纲笔记

    在给变量分配内存时,很可能这段内存存在以前其他程序使用留下的值.当使用VC编译器,若编译器发现没有给变量赋值而使用,就会返回一个以"85"开头的很大的数字(此时该段内存中为一个垃圾 ...

  9. 赫斌老师数据结构视频查缺补漏笔记

    赫斌老师数据结构视频查缺补漏笔记 观看学习赫斌老师数据结构的视频,记录下自己之前学习这块内容时似懂非懂的知识,仅针对自己查缺补漏使用 视频链接:<郝斌老师数据结构自学视频> 1.指针的大小 ...

最新文章

  1. hdu 3721 树的最小直径
  2. 【渝粤教育】 国家开放大学2020年春季 3956★汽车故障诊断技术 参考试题
  3. Axis2 WebService(配置、发布、调用)
  4. php static_castunsigned int,static_cast揭密
  5. 任正非:感谢美国,帮我把华为给全世界都宣传了
  6. 事业单位综合应用能力计算机,最新事业单位统考-综合应用能力C类梳理精华.pdf...
  7. Java基础学习总结(185)—— Java 在云原生时代的进化
  8. windows下javadoc生成文档注释的命令
  9. socket通信原理简介
  10. 秋招复习-后端(C++)
  11. ----函数句柄/时间表
  12. 2021 王道考研 408系列讲解
  13. Symbian检测是否有存储卡
  14. 一文读懂 Linux 各发行版之间的联系和区别
  15. 图文安装VMware Workstation教程
  16. Contextual Word Embeddings
  17. 关于选课系统的的界面设计、类图设计、数据库设计。
  18. [研究生]你该如何“精读”一篇文章?文献管理与文献笔记:以VCNet为例
  19. iOS -- 第三方登录之微信登录 (Swift代码)
  20. 正在参加2021年「博客之星」评选,求投票

热门文章

  1. C语言实验——求一个3*3矩阵对角线元素之和 (sdut oj)
  2. php tcpdf 不支持css,TCPDF不渲染所有CSS属性
  3. 微信支付apiV3编程实例php,PHP 微信小程序 微信支付 v3
  4. 初识java——Java语言简介
  5. BigGAN-论文阅读笔记
  6. qcc512x qcc302x qcc303x earbud 环境搭建、使用例程
  7. composer安装laravel下载不了
  8. OPENCV的下载和安装
  9. c语言界面函数,C语言图形界面常用函数集锦
  10. jdk11下载、安装及环境配置详解(win10环境)