zoukankan      html  css  js  c++  java
  • 臭皮匠排序(Stooge Sort)----(排序算法十二)

    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("
    ");  
    }
    
    
    
    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
    
    


  • 相关阅读:
    [Database]初试SQLite,看看能不能在小东西内用用
    [Database]SQLite3 Transaction [事务处理]
    N多年过去了,为什么我们的成长并不大
    [Buzz.Today]2011.11.23
    [Tips]:Windows下获得当前Dll的路径
    关于Apple Siri:人机交互新进展
    思维的新发展
    权限问题
    理解FMS应用程序实例
    用LVS构架负载均衡Linux集群系统
  • 原文地址:https://www.cnblogs.com/whzhaochao/p/5023466.html
Copyright © 2011-2022 走看看