数据结构之希尔排序(c++)

89 阅读1分钟

/* 插入排序:希尔排序 */

#include <cstdio>
#include <cstdlib>
#include <ctime>

using namespace std;

int main(){
	int arr1[100];
	//这里使用100个随机数
	int n = 10;
	for(int i = 0; i<n ;i++){
		arr1[i] = rand();
	} 

	cout<<"100个随机数为:"<<endl;
	for(int i = 0; i<n; i++){
		cout<<arr1[i]<<" ";
	}
	cout<<endl<<"100个随机数排序之后为:"<<endl;

	int step, i, j, key;
	
	for(step = n/2; step>0; step /= 2){
		for(i = step; i<n; i++){
			key = arr1[i];
			for(j = i - step; j >= 0 && arr1[j] > key; j -= step){
				arr1[j+step] = arr1[j];
			}
			
			arr1[j + step] = key;
		}
	} 

		for(int i = 0; i<n; i++){
		cout<<arr1[i]<<" ";
	}
}