quick_sort(快速排序)c语言实现

原创 2015年07月08日 09:56:21

晚上看算法导论,复习了一下快速排序。

快速排序最坏运行效率为o(n2),就是它已经排序好的情况下。

算法c语言代码如下

/*************************************************************************
    > File Name: quick_sort.c
    > Author: wayne
    > Mail: @163.com 
    > Created Time: 2015年07月07日 星期二 10时05分00秒
    思想:
    1,在数组中找到一个基准
    2.分区操作,小于基准的移到左边,大于基准的移到右边
    3.递归实现步骤2
 ************************************************************************/

#include<stdio.h>

void swap(int *a , int *b)
{
    int temp;
    temp = *a;
    *a = *b;
    *b = temp;
}


void quick_sort(int a[],int low, int high)
{
    int i;
    i = patition(a, low-1, high);
    if(low < high)
    {
    quick_sort(a, low, i-1);
    quick_sort(a, i, high-1);
    }
    }

void print_array(int a[], int n)
{
    int i;
    for(i =0 ; i<n ;i++)
    {
        printf("%d  ", a[i]);
    }
}

int patition(int a[], int p, int q)
{
    int i;
    int j = p -1 ;
    int pivot = a[q-1];
    for(i=p; i<q; i++)
    {
        if(a[i] <= pivot)
        {
            ++j;
            swap(&a[i], &a[j]);
        }
    }
    swap(&a[j], &pivot);
    return j+1;
}


int main()
{
    int a[] = {3,1,5,7,2,4,6,9,20};
    int len;
    len = sizeof(a)/sizeof(int);
    printf("%d\n", len);
    print_array(a, len);
    printf("\n");

    quick_sort(a, 0, len);
    print_array(a, len);
    printf("\n");
    return 0;
}


相关文章推荐

C++: quick sort(快排序)

到目前为止, 我们已经学习到了插入排序, 冒泡排序, 选择排序(selection)。 这些排序算法都是comparision based sorting algorithms(即涉及到元素大小的比较...
  • a130737
  • a130737
  • 2014年07月10日 08:26
  • 1422

C标准库中的快速排序(quick-sort)函数 [简单应用]

#include #include using namespace std; const size_t INDEX_ZERO = 0; int com(const void *a,const ...

深入解析快速排序(Quick Sort)

快速排序是由图灵奖获得者、计算机语言设计大佬C. A. R. Hoare在他26岁时提出的。说起C. A. R. Hoare老爷爷,可能很多人的第一印象就是快速排序,但是快排仅仅是他人生中非常小的成就...
  • utimes
  • utimes
  • 2016年08月10日 14:03
  • 1411

排序算法之快速排序<Quick_Sort>及其C语言代码实现

快速排序(Quicksort)是对冒泡排序的一种改进。 快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比...

快速排序C实现 quick sort

  • 2011年07月22日 15:34
  • 799B
  • 下载

快速排序(Quick Sort) Java实现

快速排序(Quick Sort) 快速排序(Quick Sort)的基本思想是:通过一趟排序将待排记录分割成独立的两部分其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行...

快速排序quick_sort(python的两种实现方式)

排序算法有很多,目前最好的是quick_sort:unstable,spatial complexity is nlogN. 快速排序原理python实现严蔚敏的 datastruct书中有伪代码实现...

快速排序的简单实现(Quick_Sort)

快速排序 快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:速排序和归并排序类似,也是运用了递归的思想,通过一趟排序将要排序的数据分割成独立的两部分,每次选取一个主元(Piv...

PHP实现排序算法----快速排序(Quick Sort)、快排

基本思想:快速排序(Quicksort)是对冒泡排序的一种改进。他的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行快...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:quick_sort(快速排序)c语言实现
举报原因:
原因补充:

(最多只允许输入30个字)