引言
在編程範疇,排序算法是基本且重要的部分。C言語作為一種廣泛利用的編程言語,供給了多種排序算法的實現。本文將深刻探究C言語中的疾速排序算法,這是一種高效且利用廣泛的排序方法。
疾速排序算法概述
疾速排序是一種分治戰略的排序算法,由C.A.R. Hoare在1960年提出。其核心頭腦是經由過程遞歸地將大年夜成績剖析為小成績來處理。疾速排序的均勻時光複雜度為O(n log n),在大年夜少數情況下,它比其他排序算法(如冒泡排序跟拔出排序)要快得多。
疾速排序的步調
抉擇基準值:從待排序的數組當拔取一個元素作為基準值。平日抉擇第一個或最後一個元素作為基準值。
分區操縱:將數組分別為兩個子數組,一個包含全部小於基準值的元素,另一個包含全部大年夜於基準值的元素。
遞歸排序:遞歸地對兩個子數組停止疾速排序。
疾速排序的C言語實現
以下是一個簡單的疾速排序算法的C言語實現示例:
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
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);
}
}
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr) / sizeof(arr[0]);
quickSort(arr, 0, n - 1);
printf("Sorted array: \n");
for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
return 0;
}
總結
疾速排序是一種高效且富強的排序算法,實用於各種範圍的數據。經由過程懂得其基本道理跟實現步調,我們可能輕鬆地在C言語中實現排序功能,從而處理複雜算法困難。