地精排序Gnome 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(" %x ",a[i]);  
    }  
    printf("\n");  
}


void main()
{
	//a[0]监视哨
	int  a[10] ={0,9,8,7,6,5,4,3,2,1};
	int  len=10;
	int i = 1;
	while (i < len) {
		if (i == 1 || a[i-1] <= a[i]){
			i++;
		}else{
			printf("%d<-->%d ",a[i-1],a[i]);
			printArray(a,10);
			a[0] = a[i]; 
			a[i] = a[i-1]; 
			a[--i] = a[0];
		}	
	}
	printArray(a,10);
}



3.结果

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





posted @ 2013-10-24 21:38  赵侠客  阅读(291)  评论(0编辑  收藏  举报