Bagaimana untuk melaksanakan pengisihan gabungan dalam Java
Kod pelaksanaan
import java.lang.reflect.Array; import java.util.*; public class MergeSort{ // 我们的算法类不允许产生任何实例 private MergeSort(){} // 将arr[l...mid]和arr[mid+1...r]两部分进行归并 private static void merge(Comparable[] arr, int l, int mid, int r) { Comparable[] aux = Arrays.copyOfRange(arr, l, r+1); // 初始化,i指向左半部分的起始索引位置l;j指向右半部分起始索引位置mid+1 int i = l, j = mid+1; for( int k = l ; k <= r; k ++ ){ if( i > mid ){ // 如果左半部分元素已经全部处理完毕 arr[k] = aux[j-l]; j ++; } else if( j > r ){ // 如果右半部分元素已经全部处理完毕 arr[k] = aux[i-l]; i ++; } else if( aux[i-l].compareTo(aux[j-l]) < 0 ){ // 左半部分所指元素 < 右半部分所指元素 arr[k] = aux[i-l]; i ++; } else{ // 左半部分所指元素 >= 右半部分所指元素 arr[k] = aux[j-l]; j ++; } } } // 递归使用归并排序,对arr[l...r]的范围进行排序 private static void sort(Comparable[] arr, int l, int r, int depth) { System.out.print(repeatCharacters('-', depth*2)); System.out.println("Deal with [ " + l + " , " + r + " ]"); if (l >= r) return; int mid = (l+r)/2; sort(arr, l, mid, depth + 1); sort(arr, mid + 1, r, depth + 1); merge(arr, l, mid, r); } private static String repeatCharacters(char character, int length){ StringBuilder s = new StringBuilder(length); for(int i = 0 ; i < length ; i ++) s.append(character); return s.toString(); } public static void sort(Comparable[] arr){ int n = arr.length; sort(arr, 0, n-1, 0); } // 测试MergeSort public static void main(String[] args) { // Merge Sort是我们学习的第一个O(nlogn)复杂度的算法 // 可以在1秒之内轻松处理100万数量级的数据 // 注意:不要轻易尝试使用SelectionSort, InsertionSort或者BubbleSort处理100万级的数据 // 否则,你就见识了O(n^2)的算法和O(nlogn)算法的本质差异:) // int N = 1000000; // Integer[] arr = SortTestHelper.generateRandomArray(N, 0, 100000); // SortTestHelper.testSort("bobo.algo.MergeSort", arr); Integer[] arr = new Integer[8]; for(int i = 0 ; i < 8 ; i ++) { arr[i] = new Integer(8-i); // arr[i] = 8 -i; } // arr = SortTestHelper.generateRandomArray(50, 1, 50); MergeSort.sort(arr); return; } }rrree
Kesan pelaksanaan
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pengisihan gabungan dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

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

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Adeadlockinjaoccurswhentwoormorethreadsareblockedforever, eachwaitingforaresourceHeldByTheother, biasanyaduetoculularwaitcausedbyinconsistentlockordering;
![Anda tidak menggunakan paparan yang dilampirkan pada GPU NVIDIA [tetap]](https://img.php.cn/upload/article/001/431/639/175553352135306.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
Ifyousee"YouarenotusingadisplayattachedtoanNVIDIAGPU,"ensureyourmonitorisconnectedtotheNVIDIAGPUport,configuredisplaysettingsinNVIDIAControlPanel,updatedriversusingDDUandcleaninstall,andsettheprimaryGPUtodiscreteinBIOS/UEFI.Restartaftereach

UseOptional.empty (), optional.of (), andOptional.ofnullable () tOcreateOptionalInStancesDependingOnwhethetheValueisabsent, non-null, orpossiblynull.2.CheckForvalUessafelySpresent () orprefeAdoShoDoD.

TheOilPaintfilterinPhotoshopisgreyedoutusuallybecauseofincompatibledocumentmodeorlayertype;ensureyou'reusingPhotoshopCS6orlaterinthefulldesktopversion,confirmtheimageisin8-bitperchannelandRGBcolormodebycheckingImage>Mode,andmakesureapixel-basedlay

Memahami komponen teras JCA seperti MessageDigest, Cipher, KeyGenerator, SecureRandom, Signature, Keystore, dan lain -lain, yang melaksanakan algoritma melalui mekanisme penyedia; 2. Gunakan algoritma dan parameter yang kuat seperti SHA-256/SHA-512, AES (Kunci 256-bit, mod GCM), RSA (2048-bit atau ke atas) dan SecureRandom; 3. Elakkan kunci berkod keras, gunakan KeyStore untuk menguruskan kunci, dan menjana kunci melalui kata laluan yang diperoleh dengan selamat seperti PBKDF2; 4. Lumpuhkan mod ECB, mengamalkan mod penyulitan pengesahan seperti GCM, menggunakan IV rawak yang unik untuk setiap penyulitan, dan yang sensitif yang jelas pada waktunya

Micronautisidealforbuildingcloud-nativaapplicationsduetoitslowmemoryfootprint, fastStartuptimes, dan kompilasi-timedependencyinjection, makeitsuperiortotraditionalframeworkslikespringbootformicroservices, dan

Inti springdatajpa dan hibernate yang bekerja bersama adalah: 1. JPA adalah spesifikasi dan hibernate adalah pelaksanaan, SpringDatajpa enkapsulasi memudahkan pembangunan DAO; 2. Kelas entiti Peta pangkalan data pangkalan data melalui @Entity, @id, @column, dan sebagainya; 3. Antara muka repositori mewarisi JParepository untuk melaksanakan kaedah pertanyaan CRUD dan dinamakan secara automatik; 4. Pertanyaan Kompleks Gunakan @Query Anotation untuk menyokong JPQL atau SQL asli; 5. Dalam springboot, integrasi disiapkan dengan menambah kebergantungan starter dan mengkonfigurasi sumber data dan atribut JPA; 6. Urus niaga dibuat oleh @transactiona

RuntheapplicationorcommandasAdministratorbyright-clickingandselecting"Runasadministrator"toensureelevatedprivilegesaregranted.2.CheckUserAccountControl(UAC)settingsbysearchingforUACintheStartmenuandsettingtheslidertothedefaultlevel(secondfr
