排序算法之快速排序(QuickSort)
2011-08-05 20:29
330 查看
快速排序又称分区交换排序,是目前已知的平均速度最快的一种排序算法,它是对冒泡排序的一种改进。该算法的基本思想是:从待排序的n个记录中任意选取一个记录R(通常是序列中的第一个元素)作标准,调整序列中各个记录的位置,使R前面的记录的关键字都比它小,后面的关键字都比它大,这样的一个过程称为一次快速排序。然后对两边的记录再同样分别进行这样一个过程,直到各个子序列的长度为1时,排序完毕。
算法如下:
#include "stdafx.h"
void QuickSort(int a[],int low,int high)
{
int k=low;//保存当前空位
int i=low,j=high;
int key=a[low];
while(i<j)
{
while(i<j)
{
if(a[j]<key)
{
a[k]=a[j];
k=j;
break;
}
j--;
}
while(i<j)
{
if(a[i]>key)
{
a[k]=a[i];
k=i;
break;
}
i++;
}
}
a[k]=key;
if(low<k-1) QuickSort(a,low,k-1);
if(high>k+1) QuickSort(a,k+1,high);
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[]={21,56,23,90,25,76,19,44,98,8,77,0};
QuickSort(a,0,11);
for(int i=0;i<12;i++)
{
printf("%d,",a[i]);
}
getchar();
return 0;
}
算法如下:
#include "stdafx.h"
void QuickSort(int a[],int low,int high)
{
int k=low;//保存当前空位
int i=low,j=high;
int key=a[low];
while(i<j)
{
while(i<j)
{
if(a[j]<key)
{
a[k]=a[j];
k=j;
break;
}
j--;
}
while(i<j)
{
if(a[i]>key)
{
a[k]=a[i];
k=i;
break;
}
i++;
}
}
a[k]=key;
if(low<k-1) QuickSort(a,low,k-1);
if(high>k+1) QuickSort(a,k+1,high);
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[]={21,56,23,90,25,76,19,44,98,8,77,0};
QuickSort(a,0,11);
for(int i=0;i<12;i++)
{
printf("%d,",a[i]);
}
getchar();
return 0;
}
相关文章推荐
- 排序算法之快速排序(Quicksort)解析
- 【数据结构】排序算法(二)之交换排序之快速排序(QuickSort)
- 【数据结构】排序算法(二)之交换排序之快速排序(QuickSort)
- 基本排序算法之3——快速排序quicksort
- 排序算法(QuickSort快速排序)
- 排序算法---快速排序(JDK1.7 DualPivotQuicksort 源码解析)
- 排序算法之快速排序(QuickSort)
- 排序算法 之 快速排序(quicksort)
- 排序算法之快速排序(Quicksort) (C语言)
- 【排序算法】-快速排序(QuickSort)
- 排序算法(快速排序)
- 排序算法之快速排序
- 快速排序(Quicksort)的Javascript实现
- 第七章快速排序之“快速排序的随机化版本RANDOM-QUICKSORT”
- Javascript算法系列之快速排序(Quicksort)
- 排序算法----快速排序
- 白话排序算法(归并排序,快速排序)
- 排序算法之冒泡排序和快速排序(Java版)
- php quicksort 快速排序
- 排序算法——快速排序(快排)