快速排序算法有什么语编程

fiy 其他 11

回复

共3条回复 我来回复
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    快速排序是一种常用的排序算法,它通过将待排序的元素分割成独立的两部分,其中一部分所有元素都比另一部分小,然后对这两部分元素分别进行排序,最终将整个序列排序完成。快速排序的实现可以使用多种编程语言,下面我将分别介绍如何使用C、Python和Java来实现快速排序算法。

    1. 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;
    }
    
    1. 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=" ")
    
    1. 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年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    快速排序算法可以使用多种编程语言来实现。以下是几种常用的编程语言来实现快速排序算法的示例:

    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;
    }
    
    1. 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] + " ");
            }
        }
    }
    
    1. 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=" ")
    
    1. 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年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    快速排序是一种高效的排序算法,其主要思想是通过划分将数组分为两个部分,一部分是小于划分元素的,另一部分是大于划分元素的,然后对这两个部分分别进行递归排序。

    快速排序算法的主要过程可以概括为以下几个步骤:

    1. 选择一个划分元素:从数组中选择一个元素作为划分元素,通常选择数组的第一个元素或者随机选择一个元素。

    2. 划分操作:将数组中小于划分元素的放在左边,大于划分元素的放在右边,这个过程称为划分操作。可以使用双指针法或者挖坑法进行划分。

    3. 递归排序:分别对划分得到的两个部分进行递归排序,直到每个部分只有一个元素或者没有元素。

    4. 合并结果:将排序后的左半部分和右半部分合并起来,得到最终的排序结果。

    下面是使用不同编程语言实现快速排序算法的示例:

    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);
    }
    
    1. 使用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)
    
    1. 使用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年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部