какая сортировка вставки лучше. Использует Outer для и while или два для loop.both генерирует одинаковые выходные данные. - PullRequest
0 голосов
/ 25 апреля 2018

Использование двух for петель:

import java.util.*;

public class InsertionSort{
    public static int[] doInsertionSort(int[]a){

        int j=a.length;
        for(int k=1;k<j;k++){
            for(int i=k;i>0;i--){
                if(a[i]<a[i-1]){
                    int temp=a[i];
                    a[i]=a[i-1];
                    a[i-1]=temp;
                }
                //for printing the elements while sorting..
                for(int o:a)
                    System.out.print(o+" ");
                System.out.println("");
            }
        }
        return a;
    }
    public static void main(String[] args) {
        int[]arr={99,77,55,33,11,88,66};
        int []arra= doInsertionSort(arr);
        for(int i:arra)
            System.out.print(i+" ");
    }

}

Использование петли for и while:

import java.util.*;

public class InsertionSortAgain{
    public static void main(String[] args) {
        int[]arr={99,77,55,33,11,88,66};
        int n=arr.length,j;
        for(int i=1;i<n;i++){
            j=i-1;
            int key=arr[j+1];
            while(j>=0 && arr[j]>key){ 
                arr[j+1]=arr[j];
                j=j-1;
                //for printing elements while sorting.....
                for(int k :arr)
                    System.out.print(k+" ");
                System.out.println(" ");
            }
            arr[j+1]=key;
        }
        for(int k :arr)
            System.out.print(k+" ");
    }
}

Я пробовал оба, и оба отлично, но я не мог получить то, что оптимизировано. И может ли сортировка вставок быть реализована так или нет?

...