0
在這個程序中,我找到了使用插入排序的隨機數組的排序數組。所以我現在面臨的問題是,在這個程序中,我還需要找出所做比較的次數以及在此程序中所作的分配次數。我嘗試了很多方法來找到比較和分配。我想我已經比較了,但是當我輸出比較和作業時,他們應該彼此緊密相等。那麼在我的程序中,當我輸出它的時候,它在某些情況下或者全部都不會很好地等同於它。我能做什麼?我不認爲我正在使用冒泡排序,除非我是......我將不得不從頭開始。InsertionSort程序
/*
* 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)+ ".");
}
}
「他們應該密切相等」 - 爲什麼?如果輸入已經排序,你會得到比較,但沒有分配。 – Rup
很抱歉,首先我找到了一些隨機整數。然後我將這些分配給數組。然後,我將它們按照我想要的順序排序,這是最不重要的。那麼在我對它們進行排序的循環中,我需要找到賦值和比較的次數。我不知道爲什麼不會有任何任務。我不知道爲什麼他們必須相對平等,但他們永遠不會平等。 – user2804805
當然,但是有可能這些隨機數字已經被排序。所以誰告訴你他們必須相對平等,爲什麼你認爲你得到的是錯誤的?它對我來說很好。如果您使用大型隨機輸入,例如10000個元素,他們可能傾向於相同的數量級,當然。 – Rup