C语言之堆排序

void heap_adjust(int a[], int first, int number) { //堆调整函数 
	int tmp = a[first];
	int child;
	for (child = 2 * first; child <= number; child *= 2) {
		if (child < number && a[child] < a[child + 1]) {
			ild++;
		}
		if (tmp >= a[child]) break;
		a[first] = a[child];
		first = child;  
	}
	a[first] = tmp;
}

void heap_sort(int a[], int first, int number) { //堆排序函数 
	int tmp;
	for (int i = number / 2; i >= first; i--) {
		heap_adjust(a, i, number);
	}
	for (int i = number; i > 1; i--) {
		tmp = a[1];
		a[1] = a[i];
		a[i] = tmp;
		heap_adjust(a, 1, i - 1);
	}
}

int main() {
	int array[21];
	for (int i = 1 ; i <= 10; i++) {
		int value = rand()%101; 
		array[i] = value;
		printf("%d ", array[i]);
	}
	printf("\n");
	
	heap_sort(array, 1, 10);
	for (int i = 1; i <= 10; i++) {
		printf("%d ", array[i]);
	} 
	printf("\n");
	return 0;
}

你可能感兴趣的:(c,语言)