C语言简单实现快速排序
2019-02-09 00:11
603 查看
快速排序是一种不稳定排序,它的时间复杂度为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 ={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; }
由于是第一次撰写博客,许多地方没有一个良好的习惯,还请读者见谅。创建这个博客的目的实际上是为了让自己对于数据结构与算法加深印象,通过博客的形式展现出来一方面方便自己查阅,另一方面以希望能够通过自己的微薄之力帮助到有需要的朋友。
也希望自己能够坚持下去,认真的去做这么一件事。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- (数据结构排序的实验四)快速,冒泡,简单选择,直接插入排序的c语言实现!!
- C语言实现 排序源程序(包括直接插入、希尔、冒泡、快速、简单选择、堆排序)
- C语言实现 排序源程序(包括直接插入、希尔、冒泡、快速、简单选择、堆排序)
- 简单的C语言快速排序实现代码
- 快速排序原理、复杂度分析及C语言实现
- 快速排序---C语言实现
- C语言实现快速排序
- 快速排序和二分查找算法的实现C语言
- 快速排序的C语言实现
- 排序(2)---------简单插入排序(C语言实现)
- C语言快速排序实现
- 快速排序——C语言实现
- 快速排序的C语言代码实现
- 非随机快速排序C语言实现
- 快速排序的c语言实现代码
- 基本算法简单实现-二分法查找、合并排序、冒泡排序、插入排序、选择排序、快速排序
- 快速排序分析与C语言实现
- 数据机构快速排序之c语言实现
- 简单的C语言选择排序实现代码
- 图解排序算法及C语言实现之 ------ 快速排序:Quick Sort