排序算法5——快速排序
来源:互联网 发布:淘宝双12页面怎么设置 编辑:程序博客网 时间:2024/05/16 02:15
快速排序(Quick Sort)和冒泡排序法类似,都是基于交换的排序思想,其排序流程如下:
1.首先设定一个分界值,通过该分界值将数组分为左右两个部分。
2.将小于等于分界值的元素放到数组左边,大于等于分界值的元素放到数组右边。
3.然后,左边和右边的元素又可以按照第二步的方法独立排序。
4.不断重复以上过程,直到每个部分都排序完成了。
在这里就不分析其具体的算法执行过程了,直接附源代码,大家看懂源码就可以了。
#include<stdio.h>#include<malloc.h>void QuickSort(int *a,int left,int right);void main(){int len;int *a;while(1){printf("输入该排序数组长度:");scanf("%d",&len);a=(int*)malloc(len*sizeof(int));printf("输入数组各元素:\n");for(int i=0;i<len;i++){scanf("%d",a+i);}QuickSort(a,0,len-1);printf("排序后:\n");for(int j=0;j<len;j++){printf("%d ",a[j]);if(j==len-1) printf("\n");}}free((void*)a);}void QuickSort(int *a,int left,int right){int ltemp=left;int rtemp=right;//temp为临界值int temp=a[left];while(ltemp<rtemp){//找到左边大于临界值的元素while(a[ltemp]<temp){ltemp++;}//找到右边小于临界值的元素while(a[rtemp]>temp){rtemp--;}if(ltemp<rtemp){//通过异或运算交换数组的两个元素a[ltemp]=a[ltemp]^a[rtemp];a[rtemp]=a[ltemp]^a[rtemp];a[ltemp]=a[ltemp]^a[rtemp];ltemp++;rtemp--;}}if(ltemp==rtemp) ltemp++;if(left<rtemp){QuickSort(a,left,ltemp-1);}if(ltemp<right){QuickSort(a,rtemp+1,right);}}执行截图如下:
快速排序是很重要的一个排序算法,它就有比较高的执行效率,学习排序算法的人都应该掌握。
希望大家可以多多指正我的程序或者算法思想上的错误,大家一起学习,一起进步。
0 0
- 排序算法5——快速排序
- 排序算法—快速排序
- 排序算法—快速排序
- 排序算法———快速排序
- 排序算法(一)——快速排序
- 排序算法——快速排序
- 排序算法——快速排序
- 经典排序算法——快速排序
- 排序算法——快速排序
- 经典排序算法——快速排序
- 经典排序算法——快速排序
- 排序算法——快速排序
- 排序算法——快速排序
- 排序算法——快速排序
- c++排序算法——快速排序
- 算法——排序之快速排序
- 排序算法——快速排序
- 排序算法——快速排序
- tableView中几个代理方法调用的顺序
- Eclipse+intelliJ idea等编辑器使用技巧(不断更新)
- week10--作业第二题~
- 简单,java解析算数表达式
- ubuntu文档显示乱码的解决
- 排序算法5——快速排序
- 单调队列经典题目 FOJ 1894
- 原创的重要性
- python 第8章 异常处理
- java线程系列---Runnable和Thread的区别
- 你必须知道的 34 个简单实用的 Ubuntu 快捷键
- CF 427C Checkposts Tarjan
- OpenCV操作像素
- 加油之歌vos