快速排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序相关的知识,希望对你有一定的参考价值。
快速排序时间复杂度为O(logn)~O(n²)的不稳定排序
有很多快速排序优化算法。参考https://blog.csdn.net/hacker00011000/article/details/52176100
基本算法如下:
#include "stdio.h" #define BUF_SIZE 100 void swap(int *a,int *b); void quickSort(int data[],int left,int right); void main() { int data[BUF_SIZE]; int length; int i=0; printf("Input data length: \\n"); scanf("%d",&length); printf("Input data: \\n"); for(i=0;i<length;i++) { scanf("%d",&data[i]); } printf("Data print: \\n"); for (i=0;i<length;i++) { printf("%d ",data[i]); } printf(" \\n"); quickSort(data,0,length-1); printf(" \\nData print: \\n"); for (i=0;i<length;i++) { printf("%d ",data[i]); } printf(" \\n"); } void quickSort(int data[],int left,int right) { int i=left,j=right,temp=data[left]; if(left>=right) return ; while(i!=j) { while (temp<=data[j] && i<j ) { --j; } if(i<j) data[i++]=data[j]; while (temp>=data[i] && i<j) { ++i; } if(i<j) data[j--]=data[i]; printf("step1-"); } printf("swap2-"); data[i]=temp; quickSort(data ,left,i-1); quickSort(data ,i+1,right); } void swap(int *a,int *b) { int temp; temp=*b; *b=*a; *a=temp; }
实验结果如下:
以上是关于快速排序的主要内容,如果未能解决你的问题,请参考以下文章