您的位置:

c语言quicksort排序代码的简单介绍

本文目录一览:

C语言快速排序的代码

首先我赞成你直接要代码的这种方法。

从你这个提问可以看出你对常用的排序算法都接触过,并且都没搞懂到底是怎么回事。

现在的电子平台资源都很丰富了,硬件平台的运行速度可以做到很高了,在大多数的情况下可以考虑用空间换时间的方法,也就是说你应该先搞懂算法的本质,然后再自己去实现它,开始的时候可以不考虑时间上的损耗。

排序的本质就是两个数比较大小,并根据其大小将其放到相应的位置。

记住其本质是什么,你自己绝对可以使用相应的语言实现它。

用c语言编写函数QuickSort()来实现快速排序

#include stdlib.h

#include stdio.h

#define MAXN 8

#define MOD 1024

void QuickSort(int *arr, int low, int high)

{

    if (low = high) return;

    //保存排序区间的 起始位置和终点位置

    int left = low, right = high;

    //默认 左边第一个元素 为标志

    int key = arr[low];

    while (low  high)

    {

        while (low  high  arr[high] = key) --high;

        arr[low] = arr[high];

        while (low  high  arr[low] = key) ++low;

        arr[high] = arr[low];

    }

    arr[low] = key;

    //每次排序后都分成两部分[left, low) (low, right]

    //arr[low]的位置是一定是有序的

    QuickSort(arr, left, low - 1);

    QuickSort(arr, low + 1, right);

    return;

}

int main(void)

{

    int n;

    scanf("%d", n);

    int arr[MAXN] = {0};

    int i;

    for (i = 0; i  n; ++i)

        scanf("%d", arr[i]);

    //输入是默认为生活中习惯的数组左边第一个为:编号1

    int s, m;

    scanf("%d %d", s, m);

    //转成计算机数组第一个为:编号0

    s--; m--;

    //快排

    QuickSort(arr, s, m);

    //输出

    for (i = s; i = m; ++i)

    {

        printf("%d ", arr[i]);

    }

    return 0;

}

//测试数据

//8

//1 2 3 4 5 6 7 8

//2 6

输出 6 5 4 3 2

用C语言编程实现快速排序算法

给个快速排序你参考参考

/********************** 快速排序 ****************************

基本思想:在待排序的n个记录中任取一个记录(通常取第一个记录),

  以该记录为基准,将当前的无序区划分为左右两个较小的无

  序子区,使左边的记录均小于基准值,右边的记录均大于或

  等于基准值,基准值位于两个无序区的中间位置(即该记录

  最终的排序位置)。之后,分别对两个无序区进行上述的划

  分过程,直到无序区所有记录都排序完毕。

*************************************************************/

/*************************************************************

函数名称:static void swap(int *a, int *b)

参    数:int *a---整型指针

  int *b---整型指针

功    能:交换两个整数的位置

返 回 值:无

说    明:static关键字指明了该函数只能在本文件中使用

**************************************************************/

static void swap(int *a, int *b)

{  

    int temp = *a;

    *a = *b;

    *b = temp;

}

int quickSortNum = 0; // 快速排序算法所需的趟数

/*************************************************************

函数名称:static int partition(int a[], int low, int high)

参    数:int a[]---待排序的数据

  int low---无序区的下限值

  int high---无序区的上限值

功    能:完成一趟快速排序

返 回 值:基准值的最终排序位置

说    明:static关键字指明了该函数只能在本文件中使用

**************************************************************/

static int partition(int a[], int low, int high)

{

    int privotKey = a[low];  //基准元素

    while(low  high)

{   //从表的两端交替地向中间扫描  

        while(low  high   a[high] = privotKey)   // 找到第一个小于privotKey的值

high--;  //从high所指位置向前搜索,至多到low+1位置  

        swap(a[low], a[high]);  // 将比基准元素小的交换到低端

        while(low  high   a[low] = privotKey)   // 找到第一个大于privotKey的值

low++;  //从low所指位置向后搜索,至多到high-1位置

        swap(a[low], a[high]);  // 将比基准元素大的交换到高端

    }

quickSortNum++;  // 快速排序趟数加1

return low;  // 返回基准值所在的位置

}  

/*************************************************************

函数名称:void QuickSort(int a[], int low, int high)

参    数:int a[]---待排序的数据

  int low---无序区的下限值

  int high---无序区的上限值

功    能:完成快速排序算法,并将排序完成的数据存放在数组a中

返 回 值:无

说    明:使用递归方式完成

**************************************************************/

void QuickSort(int a[], int low, int high)

{  

    if(low  high)

{

        int privotLoc = partition(a, low, high); // 将表一分为二  

        QuickSort(a, low, privotLoc-1);          // 递归对低子表递归排序  

        QuickSort(a, privotLoc+1, high);         // 递归对高子表递归排序  

    }

}

C语言快速排序代码

采用快速排序,用递归实现

#include stdio.h

#define N 10 //定义排序数组元素个数

int Qsort(int start,int length,int a[])//start排序的起始,length是要排序序列长度

{

int x = a;

int i,j;

i = start;

j = length -1;

while(i j)

{

if(x a[j])

j--;

else if(x a[j])

{

a[i] = a[j];

a[j] = x;

i++;

}

else if(x a[i])

{

a[j] = a[i];

a[i] = x;

j--;

}

else

i++;

}

if(start length-1)

{

Qsort(start,i,a);

Qsort(i+1,length,a);

}

}

void main()

{

int a[N] = {0};

int i;

for(i = 0;i N;i++)

scanf("%d",a[i]);

Qsort(0,N,a);

for(i = 0;i N;i++)

printf("%d ",a[i]);

}

程序执行时输入N个数,对这N个数进行排序,可以预设N的长度