1. 程式人生 > >希爾排序C語言

希爾排序C語言

思路:希爾排序,屬於插入排序的一種,將無序序列中相隔n個元素的元素看作一組,進行簡單插入排序,然後n-1,繼續這樣做,當n = 1時,就是直接插入排序。時間複雜度O(n^1.3),不穩定。

#include <stdio.h> 

int main(){
	int data[10]={6,4,8,3,5,1,7,9,0,2};
	int n = 3,i = 0,j = 0,temp = 0;
	for(;n > 0;n --){
		for(i = 1;i < 10;i += n){
			for(j = i - n;j >= 0;j -=n){
				if(data[j] > data[j+n]){
					temp = data[j];
					data[j] = data[j+n];
					data[j+n] = temp;
				}
			}
		}
	}
	for(i = 0;i < 10;i ++){
		printf("%d ",data[i]);
	}
	printf("\n");
	return 0;
}