📄 quicsort.c
字号:
/*****************************************/
/* 快速排序算法 */
/* 文件名quicsort.c,函数名quicksort() */
/*****************************************/
void quicksort(table *tab,int left,int right)
{
int i,j;
if(left<right)
{
i=left;j=right;
tab->r[0].key=tab->r[i].key; /*准备以本次最左边的元素值为标准进行划分,先保存其元素值*/
do
{
while(tab->r[j].key>tab->r[0].key&&i<j) j--;/*从右向左查找第1个不小于标准值的元素位置j*/
if(i<j) /*找到了,位置为j*/
{ tab->r[i].key=tab->r[j].key;i++;} /*将第j个元素置于左端并重置i*/
while(tab->r[i].key<tab->r[0].key&&i<j) i++;/*从左向右查找第1个不大于标准值的元素位置i*/
if(i<j) /*找到了,位置为i*/
{ tab->r[j].key=tab->r[i].key;j--;} /*将第i个元素置于右端并重置j*/
}while(i!=j);
tab->r[i].key=tab->r[0].key; /*将标准值放入它的最终位置,本次划分结束*/
quicksort(tab,left,i-1); /*对标准值左边递归调用本函数*/
quicksort(tab,i+1,right); /*对标准值右边递归调用本函数*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -