快速排序实例
来源:互联网 发布:js求log以10为底 编辑:程序博客网 时间:2024/05/19 11:47
#include "stdafx.h"
#include <malloc.h>
#define cutoff (3)
int array[] = {34,8,64,51,32,21};
void insert_sort(int array[],int size)
{
int temp,p;
printf("insert sort example...\n");
for(p =1;p<size;p++)
{
temp = array[p];
for(int j = p;j>0&&array[j-1]>temp;j--)
{
array[j] = array[j-1];
}
array[j] = temp;
print_array(array,size);
}
}
void print_array(int array[],int size)
{
for(int i = 0;i<size;i++)
printf(" %d",array[i]);
printf("\n");
}
void swap(int *x,int *y)
{
int temp = *x;
*x = *y;
*y = temp;
}
int Median(int array[],int left,int right)
{
int center = (left+right)/2;
if(array[left]>array[center])
swap(&array[left],&array[center]);
if(array[left]>array[right])
swap(&array[left],&array[right]);
if(array[center] >array[right])
swap(&array[center],&array[right]);
swap(&array[center],&array[right-1]);
return array[right-1];
}
void Qsort(int A[],int left,int right)
{
int i,j,pivot;
if(left+cutoff<=right)
{
pivot = Median(A,left,right);
i = left;
j = right-1;
while(1)
{
while(A[++i] < pivot) ;
while(A[--j] > pivot) ;
if(i<j)
{
swap(&A[i],&A[j]);
}
else
{
printf("pivot = %d\n",pivot);
print_array(A,right-left+1);
break;
}
}
swap(&A[i],&A[right-1]);
Qsort(A,left,i-1);
Qsort(A,i+1,right);
}
else
insert_sort(A+left,right-left+1);
}
void Quicksort(int A[],int N)
{
Qsort(A,0,N-1);
}
- 快速排序实例
- c++快速排序实例
- 快速排序实例
- 快速排序-php实例
- 快速排序实例
- 快速排序实例
- 快速排序的实例
- 快速排序qsort算法实例
- C实例---快速排序(冒泡排序)
- 快速排序原理解析及实例应用
- 快速排序算法及C++实例
- Java实例17 - 快速排序 quick sort
- 快速排序qsort()源码及使用实例。
- 快速排序实例化(详细过程)
- 数据结构14-排序方法之快速排序的实例
- 最好理解的快速排序 :实例解析输入数组,排序
- 排序与查找实例(三):快速排序
- php冒泡排序与快速排序实例详解
- jstl fn函数总结
- China Job Hunter TV Show Takes Mean Spiritedness To New Level
- xampp无法启动apache,提示terminating worker thread 0
- Eclipse开发环境的一些设置
- gettimeofday() -- 获取当前时间(保存在结构体timeval中)【转】
- 快速排序实例
- window.ope()时刷新父页面的js代码
- Tkinter教程之Scrollbar篇
- Visual Studio 卸载方法
- AutoInvoice运行报错:You must supply an invoice number when your batch source indicates manual invoice nu
- 分享
- General helper class
- flex 两个GridColumnItemRenderer传值
- 北理工2012