Stooge排序算法
来源:互联网 发布:苏州php开发 编辑:程序博客网 时间:2024/06/05 17:27
void stooge(int A[], int i, int j)
{
if(A[i] > A[j])//首尾交换
{
// exchange
int temp = A[i];
A[i] = A[j];
A[j] = temp;
}
if(i+1 >= j)
return;
int k = (j-i+1)/3;
stooge(A, i, j-k);// 递归调用前 2/3
stooge(A, i+k, j);// 递归调用后 2/3
stooge(A, i, j-k);// 递归调用前 2/3
}
过程 及例子
#include <stdio.h>
int m=1;
void stooge(int A[], int i, int j)
{
printf("/nloop:%4d/n",m++);
printf("i=%d,j=%d: ",i,j);
printf("begin: stooge(A, %d, %d)/n",i,j);
if(A[i] > A[j])//首尾交换
{
int temp = A[i];
A[i] = A[j];
A[j] = temp;
}
if(i+1 >= j)
{
printf("end: stooge(A, %d, %d)/n",i,j);
return;
}
int k = (j-i+1)/3;
printf("i=%d,j=%d,k=%d: ",i,j,k);
printf("stooge(A, i, j-k); stooge(A, %d, %d)/n",i,j-k);
stooge(A, i, j-k);// 递归调用前 2/3
printf("i=%d,j=%d,k=%d: ",i,j,k);
printf("stooge(A, i+k, j); stooge(A, %d, %d)/n",i,j-k);
stooge(A, i+k, j);// 递归调用后 2/3
printf("i=%d,j=%d,k=%d: ",i,j,k);
printf("stooge(A, i+k, j); stooge(A, %d, %d)/n",i,j-k);
stooge(A, i, j-k);// 递归调用前 2/3
printf("i=%d,j=%d,k=%d: ",i,j,k);
printf("end: stooge(A, %d, %d)/n",i,j-k);
}
int main(void)
{
int n[]={1,98,45,6,87},i;
//for(i=0;i<5;i++)
//printf("%d/n",n[i]);
stooge(n,0,4);
//for(i=0;i<5;i++)
//printf("%d/n",n[i]);
getchar();
return 0;
}
- Stooge排序算法
- 排序算法之stooge排序
- 排序算法(四):Stooge排序
- 精妙的Stooge排序算法
- 《算法导论》 7-3 Stooge排序
- 算法导论CLRS 7 思考题 Stooge排序
- Stooge排序
- Stooge 排序
- stooge排序
- 臭皮匠排序(Stooge Sort)----(排序算法十二)
- Stooge-sort排序
- stooge排序---C语言
- stooge排序 效率 说明
- 传说中的Stooge排序
- 算法有插入排序,堆排序,合并排序,快速排序和stooge排序
- 排序算法的C++实现与性能分析(插入排序、归并排序、快速排序、STOOGE排序、堆排序)
- C++模板快速排序和Stooge排序
- 算法导论习题7-3 Stooge-Sort
- 统计访问量
- 对一条语句输出回文值的补充
- XPath 语法
- 使用@Autowired注解
- 认识和选用常用的几种 GPRS 模块
- Stooge排序算法
- Linux内核设备模型(7)
- Oracle中如何用一条SQL快速生成10万条测试数据
- C/C++中回调函数初探 (转)
- Ultral Edit SN
- Popup窗口访问父窗口的4种方法以及相互传值
- XPath 节点
- Div 相对父层 总在最低端
- 和为n连续正数序列