时间:2021-05-20
快速排序是一种不稳定排序,它的时间复杂度为O(n·lgn),最坏情况为O(n2);空间复杂度为O(n·lgn)。
这种排序方式是对于冒泡排序的一种改进,它采用分治模式,将一趟排序的数据分割成独立的两部分,其中一组数据的每个值都小于另一组。每一趟在进行分类的同时实现排序。
其中每一趟的模式通过设置key当基准元素,key的选择可以是数据的第一个,也可以是数据的最后一个。这里以每次选取数据的第一个为例:
具体代码实现:
#include<stdio.h>#define N 6 int fun(int arr[],int low,int high) { int key; key=arr[low]; while(low<high) { while(low<high && arr[high]>=key) high--; if(low<high) arr[low++]=arr[high]; while(low<high && arr[low]<=key) low++; if(low<high) arr[high--]=arr[low]; } arr[low]=key; return low; } void quick_sort(int arr[],int start,int end){ int pos; if(start<end) { pos=fun(arr,start,end); quick_sort(arr,start,pos-1); quick_sort(arr,pos+1,end); }}int main(){ int i; int arr[N]={32,12,7,78,23,45}; for(i=0;i<N;i++) { printf("%d ",arr[i]); } printf("\n"); quick_sort(arr,0,N-1); for(i=0;i<N;i++) { printf("%d ",arr[i]); } return 0; }由于是第一次撰写博客,许多地方没有一个良好的习惯,还请读者见谅。创建这个博客的目的实际上是为了让自己对于数据结构与算法加深印象,通过博客的形式展现出来一方面方便自己查阅,另一方面以希望能够通过自己的微薄之力帮助到有需要的朋友。
也希望自己能够坚持下去,认真的去做这么一件事。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
C语言对磁盘文件进行快速排序简单实例快速排序(quicksort)是由C.A.R.Hoare发明并命名的,这种排序被认为是目前最好的一种排序算法。快速排序基于交
调用C语言的快速排序算法qsort();?12345678910111213141516171819202122232425262728293031323334
C语言中qsort函数的用法实例详解快速排序是一种用的最多的排序算法,在C语言的标准库中也有快速排序的函数,下面说一下详细用法。qsort函数包含在中qsort
本文通过一个C语言实现堆排序的简单实例,帮助大家抛开复杂的概念,更好的理解堆排序。实例代码如下:voidFindMaxInHeap(intarr[],const
本文实例讲述了C语言排序算法之冒泡排序实现方法。分享给大家供大家参考,具体如下:冒泡排序和改进的冒泡排序/*--------------------------