zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C语言:随机生成数+希尔排序

C语言排序 生成 随机 希尔
2023-09-27 14:22:46 时间
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAXSIZE 10
void initArr(int arr[] , int length);
void showArr(int arr[] , int length);
void shellSort(int arr[] , int length);
int main()
{
	srand((unsigned int)time(NULL));
	int arr[MAXSIZE];
	printf("==========排序前的序列=============\n");
	initArr(arr,MAXSIZE);
	showArr(arr,MAXSIZE);
	printf("==========希尔排序后的序列=============\n");
	shellSort(arr,MAXSIZE);
	showArr(arr,MAXSIZE);
	system("pause");
	return 0;
} 
void initArr(int arr[] , int length)
{
	for(int i = 0 ; i < length ; i++){
		arr[i] = rand()%20;
	}
}
void showArr(int arr[] , int length)
{
	for(int i = 0 ; i < length ; i++){
		printf("%4d",arr[i]);
	}
	printf("\n");
}
void shellSort(int arr[] , int length)
{
	//希尔排序
	int h = 4;
	while(h>=1){
		for(int i = h ; i < length ; i++){
			for(int j = i ; j >= h && arr[j] < arr[j-h] ; j-=h){
				int temp = arr[j];
				arr[j] = arr[j-h];
				arr[j-h] = temp;
			}
		}
		h /= 2;
	}
}