插入排序程序

时间:2013-10-03 15:00:22

标签: java

在这个程序中,我找到了使用插入排序的随机数组的排序数组。所以我现在遇到的问题是,在这个程序中,我还需要找到所做的比较次数以及该程序中的分配次数。我已经尝试了很多方法来查找比较和分配。我认为我有比较下来,但当我输出比较和分配时,他们应该彼此紧密相等。在我输出它的程序中,它在某些情况下或所有情况下并不完全相同。我能做什么?我不认为我使用冒泡排序,除非我......我将不得不从头开始。

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package insertionsort;
import java.util.*;
/**
 *
 * @author Owner
 */
public class InsertionSort 
    {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) 
    {
        Scanner input= new Scanner(System.in);
        int randomInt;
        int min;
        int max;
        int [] array;
        int random=0;
        int assign;
        int temp;  
        int comparison=0;
        int assignment=0;
        int length;
        int a;
        int k;

        System.out.print("How many random integers? ");
        randomInt=input.nextInt();
        System.out.print("Enter the minimum: ");
        min=input.nextInt();
        System.out.print("Enter the maximum: ");
        max=input.nextInt();
        array=new int [randomInt];

        for (a=0; a<randomInt; a++)
        {
            assign=random;
            random=(int)((Math.random()*(max-min+1)))+min;
            array[a]=random;
        }
        System.out.println();
        System.out.print("The randomized array is ");
        for(int dot=0; dot<randomInt;dot++)
        {
            if (dot==randomInt-1)
                System.out.printf("%d.", array[dot]);
            else         
                System.out.printf("%d, ",array[dot]);
        }
        System.out.println();
        length=array.length;
        for (a=1;a<length; a++)
        {
            for (int b=0; b<a;b++)
            {
                comparison++;
                if(array[b]>array[a])
                {
                    temp=array[b];
                    array[b]=array[a];
                    for (k=a;k>b;k--)
                    {
                        array[k]=array[k-1];
                        assignment++;
                    }
                    array[b+1]=temp;
                        assignment++;
                }
            }
        }
        System.out.print("The sorted array is ");
        for (a=0;a<length; a++)
        {
            if (a==length-1)
                System.out.printf("%d.",array[a]);
            else
                System.out.printf("%d, ",array[a]);
        }
        System.out.println();
        System.out.println("Total comparison count during sorting is " +comparison+ ".");
        System.out.println("Total assignment count during sorting is " +(assignment)+ ".");
    }
}

1 个答案:

答案 0 :(得分:0)

计算比较和分配的最简单方法是创建一个类,该类将执行比较和分配并使用其方法而不是<>和'='。当然,它的方法将计算比较和分配。您也可以将int与您的类包装在一起,并将其与自己的方法进行比较/分配。