关于在华为云上实现C语言的随机快速排序,你可以按照下面的步骤或者代码来完成:
include <stdio.h>
include <stdlib.h>
include <time.h>
void swap(int a, int b) {
int temp = *a;
*a = *b;
*b = temp;
}
int partition(int array[], int low, int high) {
int pivot = array[high];
int i = (low - 1);
for (int j = low; j <= high- 1; j++) {
if (array[j] < pivot) {
i++;
swap(&array[i], &array[j]);
}
}
swap(&array[i + 1], &array[high]);
return (i + 1);
}
int partition_rand(int array[], int low, int high) {
srand(time(NULL));
int random = low + rand() % (high - low);
swap(&array[random], &array[high]);
return partition(array, low, high);
}
void quicksort(int array[], int low, int high) {
if (low < high) {
int pi = partition_rand(array, low, high);
quicksort(array, low, pi - 1);
quicksort(array, pi + 1, high);
}
}
void printArray(int array[], int size) {
int i;
for (i=0; i < size; i++)
printf("%d ", array[i]);
printf("n");
}
int main() {
int array[] = {10, 7, 8, 9, 1, 5};
int n = sizeof(array)/ sizeof(array[0]);
quicksort(array, 0, n-1);
printf("Sorted array: n");
printArray(array, n);
return 0;
}
这个程序首先定义了一个需要排序的数组,然后调用quicksort函数来对这个数组进行随机快速排序。quicksort函数首先选取一个随机的pivot点,然后按照这个pivot点将数组分为两部分,一部分是小于pivot的元素,另一部分是大于pivot的元素,然后分别对这两部分进行快速排序。在这个过程中,如果出现两个元素位置不对,就使用swap函数进行交换。最后,打印出了排序后的数组。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/172860.html