Rumah pembangunan bahagian belakang Tutorial C#.Net C语言中快速排序法怎么排

C语言中快速排序法怎么排

Aug 08, 2020 am 10:13 AM
Isih cepat

快速排序法的排法:首先每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边;然后将大于等于基准点的数全部放到基准点的右边;最后在每次交换的时候就不会像冒泡排序一样每次只能在相邻的数之间进行交换,交换的距离就大的多了。

C语言中快速排序法怎么排

快速排序法的排法:

算法思想:

(1)  我们从待排序的记录序列中选取一个记录(通常第一个)作为基准元素(称为key)key=arr[left],然后设置两个变量,left指向数列的最左部,right指向数据的最右部。

f7510709d09a31222262ef056b5bbd9.png

(2)  key首先与arr[right]进行比较,如果arr[right]key则我们只需要将right--,right--之后,再拿arr[right]与key进行比较,直到arr[right]

0dc8aba21a60ad0497c55b73ba9c42e.png

(3) 如果右边存在arr[right]key,则将arr[right]=arr[left],如果arr[left]

e26fcf782b6e1830783163890899e12.png

(4)  然后再移动right重复上述步骤

9b313aeedbdcb84989f7aace1362103.png

(5)  最后得到 {23 58 13 10 57 62} 65 {106 78 95 85},再对左子数列与右子数列进行同样的操作。最终得到一个有序的数列。

9ae7730d414bfcd7d4a70e6aa26eeaf.png

算法实现:

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));
   }
}
Salin selepas log masuk
排序前:[65, 58, 95, 10, 57, 62, 13, 106, 78, 23, 85]
排序后:[10, 13, 23, 57, 58, 62, 65, 78, 85, 95, 106]
Salin selepas log masuk

相关学习推荐:C视频教程

Atas ialah kandungan terperinci C语言中快速排序法怎么排. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Petua pengisihan pantas Java dan langkah berjaga-jaga Petua pengisihan pantas Java dan langkah berjaga-jaga Feb 25, 2024 pm 10:24 PM

Kuasai kemahiran dan langkah berjaga-jaga utama Java quick sort (QuickSort) ialah algoritma pengisihan yang biasa digunakan ialah membahagikan urutan untuk diisih kepada dua bahagian bebas dengan memilih elemen penanda aras dan semua elemen dalam satu. bahagian adalah sama. adalah kurang daripada elemen asas, dan semua elemen bahagian lain lebih besar daripada elemen asas, kemudian kedua-dua bahagian disusun secara rekursif, dan akhirnya urutan tertib diperoleh. Walaupun quicksort mempunyai kerumitan masa O(nlogn) dalam kes purata, ia merosot kepada O(nlogn) dalam kes yang paling teruk

Bagaimana untuk melaksanakan pengisihan pantas menggunakan Python Bagaimana untuk melaksanakan pengisihan pantas menggunakan Python Dec 18, 2023 pm 03:37 PM

Cara melaksanakan pengisihan pantas dalam Python: 1. Tentukan fungsi yang dipanggil quick_sort dan gunakan kaedah rekursif untuk melaksanakan pengisihan pantas 2. Semak panjang tatasusunan Jika panjangnya kurang daripada atau sama dengan 1, kembalikan tatasusunan. Jika tidak, pilih tatasusunan Elemen pertama digunakan sebagai elemen pangsi (pivot), dan kemudian tatasusunan dibahagikan kepada dua sub-tatasusunan yang lebih kecil daripada elemen pangsi dan lebih besar daripada elemen pangsi dan elemen pangsi untuk membentuk tatasusunan tersusun.

Algoritma isihan pantas dilaksanakan dalam Java dan penilaian kecekapannya Algoritma isihan pantas dilaksanakan dalam Java dan penilaian kecekapannya Feb 18, 2024 pm 03:38 PM

Pelaksanaan Java bagi pengisihan pantas dan analisis prestasinya Isih cepat (QuickSort) ialah algoritma pengisihan yang sangat biasa digunakan dan cekap Ia adalah idea divide-and-conquer (DivideandConquer). Algoritma ini membahagikan tatasusunan kepada dua sub-tatasusunan, kemudian mengisih kedua-dua sub-tatasusunan masing-masing, dan akhirnya menukar keseluruhan tatasusunan kepada urutan tertib. Isih pantas menunjukkan prestasi cemerlang semasa memproses data berskala besar. Pengisihan pantas dilaksanakan secara rekursif Idea asas adalah seperti berikut: pilih asas

Bagaimana untuk mengisih fungsi dengan cepat dalam java Bagaimana untuk mengisih fungsi dengan cepat dalam java Jan 18, 2024 pm 05:26 PM

Kaedah isihan pantas: 1. Cipta fail sampel Java 2. Laksanakan algoritma isihan pantas melalui kaedah quicksort 3. Pilih elemen dalam tatasusunan sebagai pangsi (pivot), dan bahagikan tatasusunan kepada dua sub-tatasusunan, satu; mengandungi pangsi Elemen dengan elemen yang lebih kecil ialah elemen yang lebih kecil, dan satu lagi mengandungi elemen yang lebih besar daripada elemen pangsi, dan kemudian algoritma isihan pantas digunakan secara rekursif pada dua sub-tatasusunan; kaedah utama dan keluarkan hasilnya.

Apakah jenis cepat dalam bahasa C? Apakah jenis cepat dalam bahasa C? Sep 26, 2023 am 11:00 AM

Quicksort ialah algoritma pengisihan yang kerap digunakan kerana populariti dan popularitinya berbanding dengan algoritma pengisihan lain.

Isih pantas menggunakan fungsi tatasusunan dalam PHP Isih pantas menggunakan fungsi tatasusunan dalam PHP Jun 16, 2023 am 08:54 AM

PHP adalah bahasa pengaturcaraan yang sangat popular dan ia digunakan secara meluas untuk pembangunan web. Dalam PHP, tatasusunan ialah jenis data yang sangat biasa dan struktur data yang sangat berkuasa. Oleh sebab itu, PHP menyediakan banyak fungsi tatasusunan untuk membantu pembangun mengendalikan dan memanipulasi tatasusunan. Ini termasuk fungsi isihan pantas, yang membantu kami mengisih tatasusunan dengan cepat. Isih pantas ialah algoritma pengisihan biasa Idea asasnya ialah membahagikan tatasusunan kepada dua sub-tatasusunan, satu lebih kecil daripada yang lain, melalui perbandingan dan pertukaran, dan kemudian secara rekursif.

Bagaimana untuk melaksanakan algoritma isihan pantas menggunakan java Bagaimana untuk melaksanakan algoritma isihan pantas menggunakan java Sep 19, 2023 am 11:28 AM

Cara melaksanakan algoritma isihan pantas dalam Java Isihan pantas (QuickSort) ialah algoritma isihan yang biasa digunakan dan cekap. Idea asasnya ialah menggunakan strategi bahagi dan takluk (Divide and Conquer) Dengan memilih satu elemen pada satu masa sebagai nilai tanda aras, tatasusunan yang hendak diisih dibahagikan kepada dua bahagian, satu bahagian lebih kecil daripada nilai tanda aras, dan bahagian lain adalah lebih besar daripada nilai penanda aras, dan kemudian kedua-dua bahagian diproses secara berasingan, dan akhirnya mencapai pengisihan keseluruhan tatasusunan. Di bawah ini kami akan memperkenalkan secara terperinci cara menggunakan bahasa Java untuk mencapai pengisihan pantas

Pengoptimuman dan prinsip pelaksanaan: Isih pantas dalam Java Pengoptimuman dan prinsip pelaksanaan: Isih pantas dalam Java Feb 20, 2024 pm 01:24 PM

Prinsip Pelaksanaan dan Pengoptimuman Fungsi Isih Pantas Java Isih pantas ialah algoritma pengisihan yang cekap Idea pelaksanaannya adalah untuk membahagikan masalah besar kepada berbilang masalah kecil melalui kaedah bahagi dan takluk, dan menyelesaikan sub-masalah secara rekursif untuk akhirnya memperoleh penyelesaian keseluruhan. . Dalam isihan pantas, kita perlu memilih elemen penanda aras dan membahagikan tatasusunan kepada dua bahagian, satu bahagian lebih kecil daripada elemen penanda aras dan satu lagi lebih besar daripada elemen penanda aras. Kedua-dua bahagian itu kemudian diisih dengan pantas sekali lagi sehingga terdapat hanya satu elemen bagi setiap submasalah. Akhirnya, penyelesaian kepada semua sub-masalah digabungkan untuk mendapatkan tatasusunan

See all articles