快速排序法
来源:互联网 发布:js base64怎么解码 编辑:程序博客网 时间:2024/05/29 16:29
/**********************************************************
*DESCRIPTION *
* Quick sort an array a. *
*PARAMETERS *
* a is the array will be sorted; low is left index; hight is right *
* index. *
*RETURN VALUE *
* Success, true is returned; Otherwise, false is returned. *
**********************************************************/
bool quick_sort(int a[], int low, int high)
{
int middle;
if (NULL == a || low < 0 || low >= high)
{
return false;
}
middle = split(a, low, high);
if (!quick_sort(a, low, middle - 1))
{
return false;
}
if (!quick_sort(a, middle + 1, high))
{
return false;
}
return true;
}
static int split(int a[],int low,int high)
{
int key_value = a[low];
for (;;)
{
/* Find a number bigger than key_value from high index to low index. */
while(low < high && key_value <= a[high])
{
high--;
}
if (low >= high)
{
break;
}
a[low++] = a[high];
/* Find a number smaller than key_value from low index to high index. */
while(low < high && a[low] <= key_value)
{
low++;
}
if (low >= high)
{
break;
}
a[high--] = a[low];
}
a[high] = key_value;
return high;
}
*DESCRIPTION *
* Quick sort an array a. *
*PARAMETERS *
* a is the array will be sorted; low is left index; hight is right *
* index. *
*RETURN VALUE *
* Success, true is returned; Otherwise, false is returned. *
**********************************************************/
bool quick_sort(int a[], int low, int high)
{
int middle;
if (NULL == a || low < 0 || low >= high)
{
return false;
}
middle = split(a, low, high);
if (!quick_sort(a, low, middle - 1))
{
return false;
}
if (!quick_sort(a, middle + 1, high))
{
return false;
}
return true;
}
static int split(int a[],int low,int high)
{
int key_value = a[low];
for (;;)
{
/* Find a number bigger than key_value from high index to low index. */
while(low < high && key_value <= a[high])
{
high--;
}
if (low >= high)
{
break;
}
a[low++] = a[high];
/* Find a number smaller than key_value from low index to high index. */
while(low < high && a[low] <= key_value)
{
low++;
}
if (low >= high)
{
break;
}
a[high--] = a[low];
}
a[high] = key_value;
return high;
}
- 排序--快速排序法
- 【排序】快速排序法
- 快速排序法排序
- 排序算法--快速排序法
- 排序算法--快速排序法
- 快速排序法
- 快速排序法
- 快速排序法
- 快速排序法
- 快速排序法qsort
- java快速排序法
- 通用快速排序法
- 快速排序法
- 快速排序法程序
- 快速排序法
- 快速排序法
- 快速排序法
- 快速排序法
- Arc2D绘制角度的问题
- 1. BT协议
- 解决头文件相互包含问题的方法
- registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it
- Extjs4.0 之Ext.Class 属性详解 (alias/mixins /uses/requires/singleton等属性)
- 快速排序法
- 大话秋裤无敌
- SQL语言使用小记
- 将一个正整数反转
- pkcs7 pkcs12
- 编程思想汇编
- 配置实现-适用简单之道
- 如何使用NFC读卡器读取NFC卡片的UID?
- Initalizing Java Tooling