21xrx.com
2024-05-09 12:08:59 Thursday
登录
文章检索 我的文章 写文章
C语言实现快速排序算法
2023-08-10 00:14:20 深夜i     --     --
快速排序 C语言 算法 实现 排序

快速排序算法是一种高效的排序算法,被广泛应用于各个领域的编程中。它的实现可以通过C语言来完成。

快速排序算法的核心思想是将一个大的问题分解为多个小的问题来解决。具体而言,该算法选取一个元素作为"基准",然后将数组中的其他元素按照与基准的大小关系进行划分。将比基准小的元素放在基准的左侧,比基准大的元素放在基准的右侧。然后,对划分出来的两个子数组分别进行递归调用快速排序算法,直到排序完成。

以下是C语言实现快速排序算法的示例代码:


#include <stdio.h>

void swap(int* a, int* b) {

  int t = *a;

  *a = *b;

  *b = t;

}

int partition(int arr[], int low, int high) {

  int pivot = arr[high];

  int i = (low - 1);

  for (int j = low; j <= high - 1; j++) {

    if (arr[j] < pivot) {

      i++;

      swap(&arr[i], &arr[j]);

    }

  }

  swap(&arr[i + 1], &arr[high]);

  return (i + 1);

}

void quickSort(int arr[], int low, int high) {

  if (low < high) {

    int pi = partition(arr, low, high);

    quickSort(arr, low, pi - 1);

    quickSort(arr, pi + 1, high);

  }

}

void printArray(int arr[], int size) {

  for (int i = 0; i < size; i++)

    printf("%d ", arr[i]);

  printf("\n");

}

int main() {

  int arr[] = 12;

  int n = sizeof(arr) / sizeof(arr[0]);

  printf("Original array: \n");

  printArray(arr, n);

  quickSort(arr, 0, n - 1);

  printf("Sorted array: \n");

  printArray(arr, n);

  return 0;

}

上述代码中,swap()函数用于交换两个元素的值,partition()函数用于划分数组并返回基准元素的索引位置。而quickSort()函数则是实现了快速排序算法的主要部分。

在main()函数中,我们可以看到如何使用上述代码对一个整数数组进行排序,并输出排序结果。

总结而言,通过使用C语言实现快速排序算法,我们可以实现对数组的高效排序。这个算法的时间复杂度为O(nlogn),在各种应用场景中都有着广泛的应用。而快速排序算法的实现则充分展现了C语言的灵活性和高效性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复