快速排序的C++实现
来源:互联网 发布:c语言if break用法 编辑:程序博客网 时间:2024/06/16 22:01
快速排序是对冒泡排序的改进,改进的重点是:在冒泡排序中记录的比较和移动是在相邻位置进行的,记录每次交换只能前移或者后移一个位置,所以总的比较次数和移动次数比较多。快速排序中,记录的比较和移动是从两端向中间进行的,关键码较大的记录一次就能从前面移动到后面,关键码较小的记录一次就能从后面移动到前面,记录移动的距离较远,从而减小了总的比较次数和移动次数。
基本思想:首先选取一个轴值,将待排序的记录分割为独立的两个部分,左侧记录的值要小于等于轴值,右侧的值要大于等于轴值,然后对左右两部分重复上述操作,直到整个序列有序。
下面是C++实现:
/************************************************************************* > File Name: test.cpp > Author: Shorey > Mail: shoreybupt@gmail.com > Created Time: 2015年04月02日 星期四 17时01分27秒 ************************************************************************/#include<iostream>using namespace std;int Partition(int a[],int first,int last)//快速排序划分函数{ int f=first; int l=last; int tmp; while(f!=l) { while(f!=l&&a[f]<=a[l]) l--; if(f<l) { tmp=a[f]; a[f]=a[l]; a[l]=tmp; f++; } while(f!=l&&a[f]<=a[l]) f++; if(f<l) { tmp=a[f]; a[f]=a[l]; a[l]=tmp; l--; } } return f;}void QuickSort(int a[],int first,int last)//快速排序{ int p; if(first<last) { p=Partition(a,first,last); QuickSort(a,first,p-1); QuickSort(a,p+1,last); }}int main(){int a[5]={4,2,1,6,3};QuickSort(a,5);return 0;}
0 0
- 快速排序的c实现
- 快速排序的c实现
- 快速排序c实现
- 快速排序C实现
- 快速排序C实现
- 快速排序C实现
- 快速排序(C实现
- 快速排序的C语言代码实现
- 快速排序的C语言代码实现
- 快速排序的C语言代码实现
- 快速排序的C语言代码实现
- 快速排序的实现-C语言
- 快速排序算法的c语言实现
- 快速排序算法的C/C++ 实现
- 快速排序的C语言实现
- 快速排序的C语言实现
- 快速排序算法的C语言实现
- 【算法】C语言实现的快速排序
- C++内存存储区域的划分
- ios基础控件之开关按钮(UISwitch)
- Auditd - Linux 服务器安全审计工具
- HDOJ H1754 I Hate It(结构体和数组模拟线段树)
- C语言:全局变量在多个c文件中公用的方法
- 快速排序的C++实现
- golang iota
- 常见的HTTP状态码
- 第二章 19
- iOS7新特性之TextKit(四)通过boundingRectWithSize:options:attributes:context:计算文本尺寸
- Jsp页面简单分页处理
- c语言011---数组指针与指针数组
- 关于安装vs2012以后SqlSever2008失效的问题
- hdu2106(decimal system)