Rumah Java javaTutorial Menilai kecekapan dan prestasi Java Quick Sort

Menilai kecekapan dan prestasi Java Quick Sort

Feb 19, 2024 pm 10:16 PM
prestasi Bandingkan Isih cepat jenis gelembung

Menilai kecekapan dan prestasi Java Quick Sort

Analisis prestasi dan perbandingan Java Quick Sort

Quick Sort (Quick Sort) ialah algoritma pengisihan berasaskan perbandingan yang digunakan secara meluas dalam pembangunan sebenar kerana kelajuan pelaksanaannya yang pantas dan prestasi yang baik. Artikel ini akan melakukan analisis prestasi algoritma isihan pantas dalam Java dan membandingkannya dengan algoritma isihan biasa yang lain. . tujuan menyusun keseluruhan urutan. Langkah algoritma khusus adalah seperti berikut:

1) Pilih nilai paksi (Pivot) daripada tatasusunan, biasanya elemen pertama tatasusunan.
    2) Bahagikan tatasusunan kepada urutan kiri dan kanan melalui satu laluan pengisihan, supaya unsur-unsur dalam urutan kiri adalah kurang daripada atau sama dengan nilai paksi, dan unsur-unsur dalam urutan kanan lebih besar daripada nilai paksi.
  1. 3) Isih pantas urutan kiri dan kanan secara rekursif sehingga panjang jujukan ialah 1 atau 0.
    4) Akhirnya dapatkan urutan yang disusun.

    Pelaksanaan Isih Pantas dalam Java
    Berikut ialah contoh kod untuk melaksanakan Isih Pantas dalam Java:
  2. public class QuickSort {
      public static void quickSort(int[] arr, int low, int high) {
        if (low < high) {
          int pivotIdx = partition(arr, low, high);
          quickSort(arr, low, pivotIdx - 1);
          quickSort(arr, pivotIdx + 1, high);
        }
      }
      
      private static int partition(int[] arr, int low, int high) {
        int pivot = arr[low];
        int i = low + 1;
        int j = high;
        
        while (i <= j) {
          if (arr[i] <= pivot) {
            i++;
          } else if (arr[j] > pivot) {
            j--;
          } else {
            swap(arr, i, j);
          }
        }
        
        swap(arr, low, j);
        
        return j;
      }
      
      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 = {5, 2, 9, 1, 3, 7};
        quickSort(arr, 0, arr.length - 1);
        System.out.println(Arrays.toString(arr));
      }
    }
    Salin selepas log masuk

  3. Analisis dan Perbandingan Prestasi
  4. Untuk menilai prestasi algoritma Isih Pantas, kami membandingkannya dengan beberapa algoritma pengisihan biasa yang lain Bandingkan. Di bawah ialah contoh kod yang menggunakan kaedah
Java untuk mengira masa pelaksanaan algoritma:
  1. import java.util.Arrays;
    
    public class SortComparison {
      public static void main(String[] args) {
        int[] arr = generateArray(10000);
        
        long startTime = System.nanoTime();
        bubbleSort(arr.clone());
        long endTime = System.nanoTime();
        System.out.println("Bubble Sort: " + (endTime - startTime) + " ns");
        
        startTime = System.nanoTime();
        insertionSort(arr.clone());
        endTime = System.nanoTime();
        System.out.println("Insertion Sort: " + (endTime - startTime) + " ns");
        
        startTime = System.nanoTime();
        selectionSort(arr.clone());
        endTime = System.nanoTime();
        System.out.println("Selection Sort: " + (endTime - startTime) + " ns");
        
        startTime = System.nanoTime();
        quickSort(arr.clone(), 0, arr.length - 1);
        endTime = System.nanoTime();
        System.out.println("Quick Sort: " + (endTime - startTime) + " ns");
      }
      
      private static int[] generateArray(int size) {
        int[] arr = new int[size];
        for (int i = 0; i < size; i++) {
          arr[i] = (int)(Math.random() * size);
        }
        return arr;
      }
      
      private static void bubbleSort(int[] arr) {
        // 省略冒泡排序的具体实现
      }
      
      private static void insertionSort(int[] arr) {
        // 省略插入排序的具体实现
      }
      
      private static void selectionSort(int[] arr) {
        // 省略选择排序的具体实现
      }
      
      private static void quickSort(int[] arr, int low, int high) {
        // 省略快速排序的具体实现
      }
    }
    Salin selepas log masuk

    Dengan menjalankan kod di atas, kita boleh mendapatkan masa pelaksanaan setiap algoritma pengisihan. Mengikut keputusan percubaan, algoritma isihan pantas biasanya lebih pantas daripada isihan gelembung, isihan sisipan dan isihan pemilihan, terutamanya untuk mengisih set data berskala besar. Sudah tentu, dalam beberapa kes tertentu, prestasi algoritma pengisihan lain mungkin lebih baik, jadi analisis khusus masalah khusus dilakukan dan algoritma pengisihan yang paling sesuai dipilih berdasarkan situasi sebenar. System.nanoTime()Ringkasan:
Artikel ini menjalankan analisis prestasi algoritma isihan pantas dalam Java dan membandingkannya dengan algoritma isihan biasa yang lain. Melalui keputusan percubaan, kita boleh membuat kesimpulan bahawa isihan pantas secara amnya merupakan algoritma pengisihan yang cekap, terutamanya sesuai untuk mengisih set data berskala besar. Walau bagaimanapun, untuk masalah tertentu, kita perlu memilih algoritma pengisihan yang paling sesuai berdasarkan situasi sebenar.

Atas ialah kandungan terperinci Menilai kecekapan dan prestasi Java Quick Sort. 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

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

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)

Perbandingan prestasi rangka kerja Java yang berbeza Perbandingan prestasi rangka kerja Java yang berbeza Jun 05, 2024 pm 07:14 PM

Perbandingan prestasi rangka kerja Java yang berbeza: Pemprosesan permintaan REST API: Vert.x adalah yang terbaik, dengan kadar permintaan 2 kali SpringBoot dan 3 kali Dropwizard. Pertanyaan pangkalan data: HibernateORM SpringBoot adalah lebih baik daripada Vert.x dan ORM Dropwizard. Operasi caching: Pelanggan Hazelcast Vert.x lebih unggul daripada mekanisme caching SpringBoot dan Dropwizard. Rangka kerja yang sesuai: Pilih mengikut keperluan aplikasi Vert.x sesuai untuk perkhidmatan web berprestasi tinggi, SpringBoot sesuai untuk aplikasi intensif data, dan Dropwizard sesuai untuk seni bina perkhidmatan mikro.

Pembalikan nilai kunci tatasusunan PHP: analisis perbandingan prestasi kaedah yang berbeza Pembalikan nilai kunci tatasusunan PHP: analisis perbandingan prestasi kaedah yang berbeza May 03, 2024 pm 09:03 PM

Perbandingan prestasi kaedah membalik nilai kunci tatasusunan PHP menunjukkan bahawa fungsi array_flip() berprestasi lebih baik daripada gelung for dalam tatasusunan besar (lebih daripada 1 juta elemen) dan mengambil masa yang lebih singkat. Kaedah gelung untuk membalikkan nilai kunci secara manual mengambil masa yang agak lama.

Ubah kod dengan petunjuk fungsi C++: tingkatkan kecekapan dan kebolehgunaan semula Ubah kod dengan petunjuk fungsi C++: tingkatkan kecekapan dan kebolehgunaan semula Apr 29, 2024 pm 06:45 PM

Teknologi penunjuk fungsi boleh meningkatkan kecekapan dan kebolehgunaan semula kod, khususnya seperti berikut: Kecekapan yang dipertingkatkan: Menggunakan penunjuk fungsi boleh mengurangkan kod pendua dan mengoptimumkan proses panggilan. Tingkatkan kebolehgunaan semula: Penunjuk fungsi membenarkan penggunaan fungsi umum untuk memproses data yang berbeza, meningkatkan kebolehgunaan semula program.

Bagaimana untuk mengoptimumkan prestasi program berbilang benang dalam C++? Bagaimana untuk mengoptimumkan prestasi program berbilang benang dalam C++? Jun 05, 2024 pm 02:04 PM

Teknik berkesan untuk mengoptimumkan prestasi berbilang benang C++ termasuk mengehadkan bilangan utas untuk mengelakkan perbalahan sumber. Gunakan kunci mutex ringan untuk mengurangkan perbalahan. Optimumkan skop kunci dan minimumkan masa menunggu. Gunakan struktur data tanpa kunci untuk menambah baik keselarasan. Elakkan sibuk menunggu dan maklumkan urutan ketersediaan sumber melalui acara.

Struktur dan algoritma data Java: penjelasan mendalam Struktur dan algoritma data Java: penjelasan mendalam May 08, 2024 pm 10:12 PM

Struktur data dan algoritma ialah asas pembangunan Java Artikel ini meneroka secara mendalam struktur data utama (seperti tatasusunan, senarai terpaut, pepohon, dll.) dan algoritma (seperti pengisihan, carian, algoritma graf, dll.) dalam Java. Struktur ini diilustrasikan dengan contoh praktikal, termasuk menggunakan tatasusunan untuk menyimpan skor, senarai terpaut untuk mengurus senarai beli-belah, tindanan untuk melaksanakan rekursi, baris gilir untuk menyegerakkan benang, dan pepohon dan jadual cincang untuk carian dan pengesahan pantas. Memahami konsep ini membolehkan anda menulis kod Java yang cekap dan boleh diselenggara.

Panduan untuk menulis algoritma pengisihan tersuai untuk tatasusunan PHP Panduan untuk menulis algoritma pengisihan tersuai untuk tatasusunan PHP Apr 27, 2024 pm 06:12 PM

Bagaimana untuk menulis algoritma pengisihan tatasusunan PHP tersuai? Isih gelembung: Mengisih tatasusunan dengan membandingkan dan menukar elemen bersebelahan. Isih pilihan: Pilih elemen terkecil atau terbesar setiap kali dan tukarkannya dengan kedudukan semasa. Isih sisipan: Masukkan unsur satu demi satu ke dalam bahagian yang diisih.

Bagaimana untuk menggunakan penanda aras untuk menilai prestasi fungsi Java? Bagaimana untuk menggunakan penanda aras untuk menilai prestasi fungsi Java? Apr 19, 2024 pm 10:18 PM

Satu cara untuk menanda aras prestasi fungsi Java adalah dengan menggunakan Java Microbenchmark Suite (JMH). Langkah khusus termasuk: Menambah kebergantungan JMH pada projek. Buat kelas Java baharu dan anotasikannya dengan @State untuk mewakili kaedah penanda aras. Tulis kaedah penanda aras dalam kelas dan anotasikannya dengan @Benchmark. Jalankan penanda aras menggunakan alat baris arahan JMH.

Perbandingan prestasi C++ dengan bahasa lain Perbandingan prestasi C++ dengan bahasa lain Jun 01, 2024 pm 10:04 PM

Apabila membangunkan aplikasi berprestasi tinggi, C++ mengatasi bahasa lain, terutamanya dalam penanda aras mikro. Dalam penanda aras makro, kemudahan dan mekanisme pengoptimuman bahasa lain seperti Java dan C# mungkin berprestasi lebih baik. Dalam kes praktikal, C++ berprestasi baik dalam pemprosesan imej, pengiraan berangka dan pembangunan permainan, dan kawalan langsungnya terhadap pengurusan memori dan akses perkakasan membawa kelebihan prestasi yang jelas.

See all articles