快速排序的C语言实现

电脑配置不行,就只安装了个visual c++ 2010 express,按经典教材写了个快速排序,有点生疏,还不错。

int Partition(int data[],int low,int high)
{
 int pivotkey=data[low];
 data[0]=data[low];
 while(low<high)
 {
  while(low<high&&data[high]>=pivotkey)
   high--;
  data[low]=data[high];
  while(low<high&&data[low]<=pivotkey)
   low++;
  data[high]=data[low];
 }
 data[low]=data[0];
 return low;
}
void qsort(int data[],int low,int high)

 int pivotloc=0;
 if(low<high)
 {
  pivotloc=Partition(data,low,high);
  qsort(data,low,pivotloc-1);
  qsort(data,pivotloc+1,high);
 }
}
void quicksort(int data[],int N)
{
 qsort(data,1,N);
}
//test

int main(void)
{
 int i=1,arr[]={0,49,38,65,97,76,13,27,49};
 quicksort(arr,8);
 for(;i<9;i++)
  printf("%4d",arr[i]);
 return 0;
}

时间: 2024-10-11 00:48:43

快速排序的C语言实现的相关文章

快速排序算法-C语言实现

注:本篇内容为翻译,之所以选择这篇进行翻译原因是该文章含有动画,能够更加直观地展示快速排序.同时,可以仔细看一下代码,代码中把结构化的思想给予了更加充分地表现.按照功能进行模块划分的思想得到了彻底地贯彻. 以下内容翻译自: http://cprogramminglanguage.net/quicksort-algorithm-c-source-code.aspx 译文: 在快速排序算法中,使用了分治策略.首先把序列分成两个子序列,递归地对子序列进行排序,直到整个序列排序结束. 步骤如下: 在序列

快速排序(C语言)-解析

快速排序 快速排序是一种排序算法,对包含 n 个数的输入数组,最坏情况运行时间为O(n2).虽然这个最坏情况运行时间比较差,但快速排序通常是用于排序的最佳的实用选择, 这是因为其平均性能相当好:期望的运行时间为O(nlgn),且O(nlgn)记号中隐含的常数因子很小.另外,它还能够进行就地排序,在虚存环境中也能很好的工作. 快速排序(Quicksort)是对冒泡排序的一种改进. 快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,

快速排序算法C语言版

快速排序(Quicksort)是对冒泡排序的一种改进. 快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列. 设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过

算法学习之快速排序的C语言实现

近几天在学习简单算法,今天看了一个快速排序和堆排序,堆排序还没搞懂,还是先把快速排序搞清楚吧 教程网上一艘一大堆,这里选择一个讲的比较通俗的的一个吧: http://blog.csdn.net/morewindows/article/details/6684558 于是我就模仿着谢了完整的代码,实现很好. 另外,为了 测量程序运行的时间,加了测试代码.好了,废话不多说. //快速排序实现 #include "stdio.h" #include "stdlib.h"

快速排序,C语言实现

排序法里比较出名的,具体的算法看下图: 这篇博客说的通俗易懂:http://blog.csdn.net/morewindows/article/details/6684558 这是快速排序的基础,用代码实现如下: void DiviedSort(int* arr_p,int start,int end) { int left,right,i=0; int pivot,result; bool flag; flag = TRUE; pivot = arr_p[start]; right = end

快速排序(c语言)

用顺序表保存输入的数据,再用快速排序法给输入的数据排序,并打印出每趟排序后的结果 #include<stdio.h> #include<stdlib.h> #include <conio.h> #define LIST_INIT_SIZE 100 typedef int Status; typedef int ElemType; typedef struct{ ElemType *r; //存储空间基址 // struct A *r int length; //当前长度

常用排序算法之——快速排序(C语言+VC6.0平台)

经典排序算法中快速排序具有较好的效率,但其实现思路相对较难理解. #include<stdio.h> int partition(int num[],int low,int high) //以key为基准 将待排数列“高”.“低 ”两部分,“高”部分的所有数据比key大,“低”部分的数据都比key小 { int left,right,key; left=low;right=high;key=num[low]; while(left<right) { while(left<right

快速排序的C语言实现

#include <stdio.h>//快速排序算法/*b是起始索引号m是终止索引号.快排的过程是:0.i=第一个元素位置索引号 j=最后一个元素的位置索引号 x等于第i个元素的值1.从位置j开始从右向左找比x小的值的索引号,这个过程就是每一次j都减小1直到找到为止.2.将比x小的值填入到i索引的位置.3.i自增1.4.5.从i*/void quickpatition(int a[],int b,int m){        }

快速排序法C语言实现

快速排序法是对冒泡排序法的一种改进.他的基本思想是通过一趟排序把数据分割成独立的两部分, 其中一部分的所有数据都比另一部分要小,以达到整个数据的排序. 首先选取一个数据为基准X通常选取第一个数据.设置两个变量I,J开始排序的时候I = 0 J = N-1(这里N为数据的个数).从J开始搜索,即从后往前搜索,找到小于X的值两者交换.,之后从I开始搜索,找到大于X的值交换两者,交叉重复以上两步,直到I = J: 举个例子: A[0]    A[1]    A[2]    A[3]    A[4]