一、C語言實現快速排序演算法
C語言實現快速排序演算法可以使用遞歸方式實現。基本思路是先取一個基準數,將數組分為兩個部分,小於等於基準數的在左邊,大於基準數的在右邊,然後遞歸排序左右兩部分,直到所有的子序列都有序。
void quick_sort(int arr[], int left, int right) { int i = left, j = right; int pivot = arr[(left + right) / 2]; while (i <= j) { while (arr[i] pivot) { j--; } if (i <= j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; i++; j--; } } if (left < j) { quick_sort(arr, left, j); } if (i < right) { quick_sort(arr, i, right); } }
二、快速排序演算法C++代碼
快速排序演算法的C++代碼同樣可以使用遞歸方式實現,但是C++使用STL提供的sort函數也可以實現快速排序。sort函數的默認實現使用快速排序演算法,時間複雜度為O(nlogn)。
#include <bits/stdc++.h> using namespace std; int main() { int arr[] = {5, 3, 9, 7, 1, 8, 4, 6, 2}; int n = sizeof(arr) / sizeof(arr[0]); sort(arr, arr + n); for (int i = 0; i < n; i++) { cout << arr[i] << " "; } return 0; }
三、快速排序演算法的時間複雜度
快速排序演算法的平均時間複雜度為O(nlogn),最壞時間複雜度為O(n^2)。最壞情況是當待排序序列已經有序,或者每次分割後的兩個子序列大小差距比較大時,遞歸深度會達到序列長度n,導致時間複雜度退化。
四、快速排序演算法代碼
快速排序演算法的代碼如下:
void quick_sort(int arr[], int left, int right) { int i = left, j = right; int pivot = arr[(left + right) / 2]; while (i <= j) { while (arr[i] pivot) { j--; } if (i <= j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; i++; j--; } } if (left < j) { quick_sort(arr, left, j); } if (i < right) { quick_sort(arr, i, right); } }
五、JS快速排序演算法
JS快速排序演算法的思路與C++快速排序演算法類似,也是使用遞歸實現。代碼如下:
function quickSort(arr) { if (arr.length <= 1) return arr; var pivotIndex = Math.floor(arr.length / 2); var pivot = arr.splice(pivotIndex, 1)[0]; var left = []; var right = []; for (var i = 0; i < arr.length; i++) { if (arr[i] < pivot) { left.push(arr[i]); } else { right.push(arr[i]); } } return quickSort(left).concat([pivot], quickSort(right)); }
六、快速排序演算法C語言
快速排序演算法的C語言實現如下:
void quick_sort(int arr[], int left, int right) { int i = left, j = right; int pivot = arr[(left + right) / 2]; while (i <= j) { while (arr[i] pivot) { j--; } if (i <= j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; i++; j--; } } if (left < j) { quick_sort(arr, left, j); } if (i < right) { quick_sort(arr, i, right); } }
七、快速排序演算法的原理圖解
快速排序演算法的原理圖解如下:
八、C語言快速排序演算法代碼
C語言快速排序演算法的代碼如下:
void quick_sort(int arr[], int left, int right) { int i = left, j = right; int pivot = arr[(left + right) / 2]; while (i <= j) { while (arr[i] pivot) { j--; } if (i <= j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; i++; j--; } } if (left < j) { quick_sort(arr, left, j); } if (i < right) { quick_sort(arr, i, right); } }
九、快速排序演算法代碼C語言實現
快速排序演算法代碼的C語言實現如下:
void quick_sort(int arr[], int left, int right) { int i = left, j = right; int pivot = arr[(left + right) / 2]; while (i <= j) { while (arr[i] pivot) { j--; } if (i <= j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; i++; j--; } } if (left < j) { quick_sort(arr, left, j); } if (i < right) { quick_sort(arr, i, right); } }
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/295174.html