Maison > Java > javaDidacticiel > Tableaux

Tableaux

王林
Libérer: 2024-07-25 22:24:23
original
964 Les gens l'ont consulté

Tableaux

Fusionner le tri

L'un des algorithmes de tri avec une complexité temporelle de O(nlogn) où n est la longueur du tableau donné.

///tc : O(nlogn)
//sc : O(n) for creating intermediate arrays a, b of size of part of subarray which is of size n
class Solution {
    public int[] sortArray(int[] nums) {
         merge(0,nums.length-1,nums);
         return nums;
    }
    public void merge(int start, int end, int arr[]){
        if(end>start){
            int mid = (start+end)/2;
            merge(start,mid,arr);
            merge(mid+1,end,arr);
            sort(start, mid,end, arr);
        }
    }
    public void sort(int start, int mid ,int end, int arr[]){
        int a[] = new int[mid-start+1];
        int b[] = new int[end-mid];
        for(int i = 0;i




<hr>

<p>Nombre d'inversions</p>

<p>Combien de comparaisons sont nécessaires avant que les tableaux ne soient triés ( étant donné l'index i, j du tableau arr[] , <strong>arr[i]> arr[j]</strong> ( pour j> i) incrémentera le l'inversion compte par 1 à chaque fois que cette condition est remplie.</p>

<p>remarque : <em>nous pouvons utiliser la même approche de tri par fusion pour trouver le nombre d'inversions (le code de tri par fusion a été légèrement modifié pour le rendre plus lisible)</em><br>
</p>

<pre class="brush:php;toolbar:false">class Solution {
    // arr[]: Input Array
    // N : Size of the Array arr[]
    // Function to count inversions in the array.

    static long inversionCount(long arr[], int n) {
        // Your Code Here
       //we can use merge sort
       long temp[]= new long[n];
       return merge(0,n-1,arr,temp);


    }
    public static long merge(int start, int end, long arr[],long[] temp){
        long count = 0;
        if(end>start){
            int mid = (start+end)/2;
            count+=merge(start,mid,arr,temp);
            count+=merge(mid+1,end,arr,temp);
           count+=sort(start, mid,end, arr,temp);
        }
        return count;
    }
    public static long sort(int start, int mid ,int end, long arr[],long [] temp){
        long count = 0;
        int i = start;
        int j = mid+1;
        int k = start;

        while(i arr[j] then all the values after ith index including will be
                // greater that jth index value hence count += mid-i+1
            }
            k++;
        }
        while(i




          

            
  

            
        
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal