臭皮匠排序(Stooge Sort)----(排序算法十二)

本文详细介绍了 Stooge Sort 排序算法的工作原理,并通过 C 语言实现展示了其具体步骤。Stooge Sort 是一种递归排序算法,通过不断将数组分为三等分并递归排序来完成整个数组的排序过程。文章通过一系列交换元素的过程,演示了 Stooge Sort 的执行流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.算法原理


2.代码实现

#include <stdio.h>

//printArray打印出数组
void printArray(int a[],int size){  
    printf("数组为:[%d] ",a[0]);  
    for (int i=1;i<size;i++)  
    {  
        printf(" %d ",a[i]);  
    }  
    printf("\n");  
}



void StoogeSort(int *a, int i, int j)  
{  
    if(a[i]>a[j])  {
		printf("%d<-->%d ",a[i],a[j]);
		printArray(a,10);
		a[0]=a[i];
		a[i]=a[j];
		a[j]=a[0];
	}

    if((i+1)>=j)  
        return;  
    int k = (j-i+1)/3;  
    StoogeSort(a, i, j-k);  
    StoogeSort(a, i+k, j);  
    StoogeSort(a, i, j-k);  
}  


void main()
{
	//a[0]监视哨
	int  a[10] ={0,9,8,7,6,5,4,3,2,1};  
	int  len=10;
	StoogeSort(a,1,len);
	printArray(a,len);
}



3.结果


9<-->3 数组为:[0]  9  8  7  6  5  4  3  2  1
8<-->7 数组为:[9]  3  8  7  6  5  4  9  2  1
7<-->6 数组为:[8]  3  7  8  6  5  4  9  2  1
8<-->7 数组为:[7]  3  6  8  7  5  4  9  2  1
6<-->5 数组为:[8]  3  6  7  8  5  4  9  2  1
7<-->6 数组为:[6]  3  5  7  8  6  4  9  2  1
8<-->7 数组为:[7]  3  5  6  8  7  4  9  2  1
6<-->4 数组为:[8]  3  5  6  7  8  4  9  2  1
7<-->6 数组为:[6]  3  5  4  7  8  6  9  2  1
8<-->7 数组为:[7]  3  5  4  6  8  7  9  2  1
5<-->4 数组为:[8]  3  5  4  6  7  8  9  2  1
6<-->2 数组为:[5]  3  4  5  6  7  8  9  2  1
7<-->6 数组为:[6]  3  4  5  2  7  8  9  6  1
8<-->7 数组为:[7]  3  4  5  2  6  8  9  7  1
9<-->8 数组为:[8]  3  4  5  2  6  7  9  8  1
7<-->1 数组为:[9]  3  4  5  2  6  7  8  9  1
8<-->7 数组为:[7]  3  4  5  2  6  1  8  9  7
9<-->8 数组为:[8]  3  4  5  2  6  1  7  9  8
2<-->1 数组为:[9]  3  4  5  2  6  1  7  8  9
6<-->2 数组为:[2]  3  4  5  1  6  2  7  8  9
3<-->2 数组为:[6]  3  4  5  1  2  6  7  8  9
2<-->1 数组为:[3]  2  4  5  1  3  6  7  8  9
4<-->2 数组为:[2]  1  4  5  2  3  6  7  8  9
5<-->4 数组为:[4]  1  2  5  4  3  6  7  8  9
4<-->3 数组为:[5]  1  2  4  5  3  6  7  8  9
5<-->4 数组为:[4]  1  2  3  5  4  6  7  8  9
数组为:[5]  1  2  3  4  5  6  7  8  9



转载于:https://www.cnblogs.com/whzhaochao/p/5023466.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值