#include <stdio.h>
/*
关键在于:确定第一个元素的位置,左边都是比这个元素小的,右边是大的,然后
递归进行左右边 分别 确定各自第一个元素的位置
*/
void QuickSort(int *a, int low, int high);
int FindPos(int *a, int low, int high);
int main(void)
{
int a[6] = {2,-21,0,-5,34,3};
int i;
QuickSort(a,0,5);
for(i=0; i<6; i++)
{
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
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;//或者a[high] = val;low==high
return high; //low也可以,low==high
}
分享到:
相关推荐
用C语言实现快速排序 void input(); void output(); void quick_sort(int low,int high); int part(int low,int high);
(2)需要实现起泡排序(Bubble)、直接插入排序(Insert)、简单选择排序(Select)、快速排序(Quick)、希尔排序(Shell)、堆排序(Heap)几种基本排序算法。 (3)需要实现数据的插入操作,将五组数据存入...
c语言版本的数据结构的快速排序算法,适用于新手学习
介绍的是关于C语言的排序法:堆排序、希尔排序、合并排序、冒泡法、交换法、选择法、插入法、SHELL排序双、向冒泡、快速排序等等排序法。
各类排序算法整理--C语言描述--本人编写 排序算法种类有: 冒泡 快速排序 堆排序 希尔排序 插入排序 选择排序 二路归并排序
C语言写的桶排序算法C语言写的桶排序算法C语言写的桶排序算法
快速排序算法C语言实现快速排序算法C语言实现 www.edsionte.com/techblog
快速排序算法C语言程序,快速排序算法和冒泡排序法类似,都是基于交换排序思想,但是快速排序算法对冒泡排序算法进行改进,从而使其具有更高的执行效率。
快速排序算法,C语言 快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有...
程序运行后,在当前文件夹下(程序)先生成一个有5000个整数的text1文件,然后从中读取文件,将5000数升值排序后写到text2文件中
C语言快速排序算法,包含数组和指针的实现方法
快速排序算法c语言
C语言实现SHELL排序算法!C语言实现SHELL排序算法!
七大排序算法如下: 交换排序:快速排序quicksort,冒泡排序bubblesort 选择排序:直接选择排序selectionsort,堆排序maxheapsort 插入排序:直接插入排序insertsort,希尔排序shellsort 合并排序:归并排序...
快速排序 实验数据:input.txt(共100个数据) ——要求按从小到大进行排序 将排好序的数据输出到output.txt文件中
用C语言实现快速排序的代码,应该会有帮助。
快速排序算法c语言
经典的快速排序算法。代码较少,容易读懂。
C语言实现常见排序算法。编译环境:VS2010。 包括: 冒泡排序 快速排序 直接插入排序 Shell排序 直接选择排序 堆排序 归并排序(递归和非递归两种) 桶式排序 基数排序:顺序和静态队列两种方法 索引排序(采用简单...