快速排序算法有什么语编程
-
快速排序是一种常用的排序算法,它通过将待排序的元素分割成独立的两部分,其中一部分所有元素都比另一部分小,然后对这两部分元素分别进行排序,最终将整个序列排序完成。快速排序的实现可以使用多种编程语言,下面我将分别介绍如何使用C、Python和Java来实现快速排序算法。
- 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, 25, 12, 22, 11}; 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]); } return 0; }- Python语言实现快速排序:
def quickSort(arr): if len(arr) <= 1: return arr pivot = arr[len(arr) // 2] left = [x for x in arr if x < pivot] middle = [x for x in arr if x == pivot] right = [x for x in arr if x > pivot] return quickSort(left) + middle + quickSort(right) arr = [64, 25, 12, 22, 11] sorted_arr = quickSort(arr) print("Sorted array: ") for i in sorted_arr: print(i, end=" ")- Java语言实现快速排序:
import java.util.Arrays; public class QuickSort { public static 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); } } private static 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, j); } } swap(arr, i + 1, high); return i + 1; } private static void swap(int[] arr, int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } public static void main(String[] args) { int[] arr = {64, 25, 12, 22, 11}; quickSort(arr, 0, arr.length - 1); System.out.println("Sorted array: "); System.out.println(Arrays.toString(arr)); } }以上就是使用C、Python和Java编程语言实现快速排序算法的示例代码。这些示例代码都遵循了快速排序的基本思想,通过递归的方式实现对两个子序列的排序,最终得到整个序列排好序的结果。
1年前 -
快速排序算法可以使用多种编程语言来实现。以下是几种常用的编程语言来实现快速排序算法的示例:
- 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); } } int main() { int arr[] = {10, 7, 8, 9, 1, 5}; 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]); } return 0; }- Java语言:
public class QuickSort { public static void swap(int[] arr, int a, int b) { int temp = arr[a]; arr[a] = arr[b]; arr[b] = temp; } public static 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, j); } } swap(arr, i + 1, high); return i + 1; } public static 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); } } public static void main(String[] args) { int[] arr = {10, 7, 8, 9, 1, 5}; int n = arr.length; quickSort(arr, 0, n - 1); System.out.println("Sorted array: "); for (int i = 0; i < n; i++) { System.out.print(arr[i] + " "); } } }- Python语言:
def partition(arr, low, high): i = low - 1 pivot = arr[high] for j in range(low, high): if arr[j] <= pivot: i += 1 arr[i], arr[j] = arr[j], arr[i] arr[i + 1], arr[high] = arr[high], arr[i + 1] return i + 1 def quickSort(arr, low, high): if low < high: pi = partition(arr, low, high) quickSort(arr, low, pi - 1) quickSort(arr, pi + 1, high) arr = [10, 7, 8, 9, 1, 5] n = len(arr) quickSort(arr, 0, n - 1) print("Sorted array:") for i in range(n): print(arr[i], end=" ")- JavaScript语言:
function swap(arr, a, b) { var temp = arr[a]; arr[a] = arr[b]; arr[b] = temp; } function partition(arr, low, high) { var pivot = arr[high]; var i = low - 1; for (var j = low; j <= high - 1; j++) { if (arr[j] < pivot) { i++; swap(arr, i, j); } } swap(arr, i + 1, high); return i + 1; } function quickSort(arr, low, high) { if (low < high) { var pi = partition(arr, low, high); quickSort(arr, low, pi - 1); quickSort(arr, pi + 1, high); } } var arr = [10, 7, 8, 9, 1, 5]; var n = arr.length; quickSort(arr, 0, n - 1); console.log("Sorted array:"); for (var i = 0; i < n; i++) { console.log(arr[i]); }以上是几种常用的编程语言来实现快速排序算法的示例,根据具体的编程语言特性和语法规则,可以选择适用的编程语言来实现快速排序算法。
1年前 -
快速排序是一种高效的排序算法,其主要思想是通过划分将数组分为两个部分,一部分是小于划分元素的,另一部分是大于划分元素的,然后对这两个部分分别进行递归排序。
快速排序算法的主要过程可以概括为以下几个步骤:
-
选择一个划分元素:从数组中选择一个元素作为划分元素,通常选择数组的第一个元素或者随机选择一个元素。
-
划分操作:将数组中小于划分元素的放在左边,大于划分元素的放在右边,这个过程称为划分操作。可以使用双指针法或者挖坑法进行划分。
-
递归排序:分别对划分得到的两个部分进行递归排序,直到每个部分只有一个元素或者没有元素。
-
合并结果:将排序后的左半部分和右半部分合并起来,得到最终的排序结果。
下面是使用不同编程语言实现快速排序算法的示例:
- 使用C++实现快速排序:
void quickSort(vector<int>& nums, int left, int right) { if (left >= right) return; int pivot = nums[left]; int i = left, j = right; while (i < j) { while (i < j && nums[j] >= pivot) j--; while (i < j && nums[i] <= pivot) i++; if (i < j) { swap(nums[i], nums[j]); } } swap(nums[left], nums[i]); quickSort(nums, left, i - 1); quickSort(nums, i + 1, right); }- 使用Python实现快速排序:
def quickSort(nums, left, right): if left >= right: return pivot = nums[left] i, j = left, right while i < j: while i < j and nums[j] >= pivot: j -= 1 while i < j and nums[i] <= pivot: i += 1 if i < j: nums[i], nums[j] = nums[j], nums[i] nums[left], nums[i] = nums[i], nums[left] quickSort(nums, left, i - 1) quickSort(nums, i + 1, right)- 使用Java实现快速排序:
public void quickSort(int[] nums, int left, int right) { if (left >= right) return; int pivot = nums[left]; int i = left, j = right; while (i < j) { while (i < j && nums[j] >= pivot) j--; while (i < j && nums[i] <= pivot) i++; if (i < j) { int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; } } nums[left] = nums[i]; nums[i] = pivot; quickSort(nums, left, i - 1); quickSort(nums, i + 1, right); }以上是使用C++、Python和Java三种常见编程语言实现快速排序算法的示例。在实际应用中,快速排序算法是一种非常常用的排序算法,其时间复杂度为O(nlogn),并且具有原地排序的特性。
1年前 -