Home  >  Article  >  Backend Development  >  How to sort using quick sort in C language

How to sort using quick sort in C language

coldplay.xixi
coldplay.xixiOriginal
2020-08-08 10:13:023510browse

Arrangement method of quick sorting method: First, set a reference point every time you sort, put all the numbers less than or equal to the reference point to the left of the reference point; then put all the numbers greater than or equal to the reference point To the right of the reference point; finally, every exchange will not be like bubble sorting where only adjacent numbers can be exchanged each time, and the exchange distance will be much larger.

How to sort using quick sort in C language

Quick sorting method:

Algorithm idea:

(1) We select a record (usually the first one) from the record sequence to be sorted as the reference element (called key) key=arr[left], and then set two variables, left points to the leftmost part of the sequence , right points to the rightmost part of the data.

How to sort using quick sort in C language

(2) key is first compared with arr[right]. If arr[right]key, then we only need to compare right--, right--, and then compare arr[right] with key until arr[right]

How to sort using quick sort in C language

(3) If there is arr[right]key, then arr[right]=arr[left]. If arr[left]

How to sort using quick sort in C language

(4) Then move right and repeat the above steps

How to sort using quick sort in C language

(5) Finally get {23 58 13 10 57 62} 65 {106 78 95 85}, and then perform the same operation on the left subarray and right subarray. Finally, an ordered sequence is obtained.

How to sort using quick sort in C language

Algorithm implementation:

public class QuickSort {
 
   public static void quickSort(int [] arr,int left,int right) {
      int pivot=0;
      if(left<right) {
         pivot=partition(arr,left,right);
         quickSort(arr,left,pivot-1);
         quickSort(arr,pivot+1,right);
      }
   }
 
   private static int partition(int[] arr,int left,int right) {
      int key=arr[left];
      while(left<right) {
         while(left<right && arr[right]>=key) {
            right--;
         }
         arr[left]=arr[right];
         while(left<right && arr[left]<=key) {
            left++;
         }
         arr[right]=arr[left];
      }
      arr[left]=key;
      return left;
   }
  
   public static void main(String[] args) {
      int arr[]= {65,58,95,10,57,62,13,106,78,23,85};
      System.out.println("排序前:"+Arrays.toString(arr));
      quickSort(arr,0,arr.length-1);
      System.out.println("排序后:"+Arrays.toString(arr));
   }
}
排序前:[65, 58, 95, 10, 57, 62, 13, 106, 78, 23, 85]
排序后:[10, 13, 23, 57, 58, 62, 65, 78, 85, 95, 106]

Related learning recommendations: C video tutorial

The above is the detailed content of How to sort using quick sort in C language. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn