美文网首页
C快速排序

C快速排序

作者: 橙姜 | 来源:发表于2018-05-31 13:51 被阅读0次

https://blog.csdn.net/yuzhihui_no1/article/details/44198701#
最优时间复杂度:O(nlog2n)
平均时间复杂度:O(nlog2n)
最差时间复杂度:O( n^2 )

include<stdio.h>

// 打印数组
void print_array(int *array, int length)
{
int index = 0;
printf("array:\n");
for(; index < length; index++){
printf(" %d,", *(array+index));
}
printf("\n\n");
}

void quickSort(int array[], int length)
{
int start = 0;
int end = length-1;
int value = array[start];// 得到哨兵元素

 if (1 > length) return;// 递归出口

 while(start < end){// 以哨兵元素为标准,分成大于它和小于它的两列元素

     while(start < end){// 从数组尾部往前循环得到小于哨兵元素的一个元素
         if ( array[end--] < value ){
             array[start++] = array[++end];
             break;
         }
     }

     while( start < end ){// 从数组头部往后循环得到大于哨兵元素的一个元素
         if( array[start++] > value){
             array[end--] = array[--start];
             break;
         }
     }
 }
 array[start] = value;// 放置哨兵元素
 printf("\nstart:%d, end:%d\n", start, end);// 这个是测试下start和end是否一样
 quickSort(array, start);// 递归排序小于哨兵元素的那一列元素
 quickSort(array + start + 1, length - start - 1);// 递归排序大于哨兵元素的那一列

}

int main(void)
{
int array[12] = {1,11,12,4,2,6,9,0,3,7,8,2};
print_array(array, 12);// 开始前打印下
quickSort(array, 12);// 快速排序
print_array(array, 12);// 排序后打印下
return 0;
}

相关文章

  • 七大排序算法之快速排序

    七大排序算法之快速排序 @(算法笔记)[排序算法, 快速排序, C++实现] [TOC] 快速排序的介绍: 快速排...

  • 1.2-交换排序-快速排序

    参考链接 交换排序:快速排序(Quick Sort) 白话经典算法系列之六 快速排序 快速搞定 快速排序是C.R....

  • C++中级算法第四天(快速排序)

    大家好!今天给大家讲的是快速排序 解释: 快速排序(Quicksort)是对冒泡排序的一种改进。 快速排序由C. ...

  • 算法(四)--快速排序

    快速排序基本思想 快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1...

  • 《算法图解》笔记 ii

    快速排序 快速排序是一种常用的排序算法,比选择排序快得多(O(n^2)),快速排序也使用了D&C。 选择基准值 将...

  • 基本算法

    冒泡排序、插入排序、选择排序、快速排序、二分查找(Objective-C实现)

  • 算法之快速排序、分而治之

    分而治之 快速排序——一种常用的优雅的排序算法。快速排序使用分而治之的策略。 分而治之 (divide and c...

  • 游戏工程师面试要点整理

    浅析Lua中table的遍历和删除 stl:vector stl:map 插入排序 希尔排序 快速排序 c/c++...

  • 基础算法笔记 python和C++

    二分查找 python code 选择排序 python code c++ code 快速排序 python c++

  • 排序算法

    快速排序:顾名思义就是快,c语言底层实现的排序算法主要就是用的快速排序。快速排序,最好时间复杂度是nlogn,最坏...

网友评论

      本文标题:C快速排序

      本文链接:https://www.haomeiwen.com/subject/xteqsftx.html