دوستان خوبم که بعید میدونم هیچ کدومتون کدها رو اجرا کرده باشین،چه برسه به بررسیشون
مسئله حل شد
فکر کردم شاید یه روزی ، یه بنده خدایی ، به موضوع بهینه گی الگوریتم ها و چگونگی تست اونها علاقه مند باشه و گذرش به اینجا بیفته،بنابراین تجربه م رو در اختیارش میگذارم :
موضوع اینه که وقتی از نمونه ی خیلی بزرگ(یا به اندازه ی کافی بزرگ)ی استفاده بشه برای تست،نتایج هم در تمام خروجی ها مطابق انتظار خواهد بود
برای مثال عدد 15,485,863 رو در مورد این برنامه به کار گرفتم و شاید نزدیک به 50 بار اجرا کردم،و نتایج همیشه یک شکل بود : برای الگوریتم اول حدود 1 ثانیه و برای دومی و سومی حدود نیم ثانیه
یه برنامه ی دیگه ای بود-مرتب سازی حبابی-اونو هم با دو الگوریتم که تفاوت ریزی با هم داشتند،امتحان کردم ، منتها یه بار با 2000 عدد،که مثل همون مثال اعداد اول قاتی میکرد،اما برای 10000 عدد،دقیقا اختلاف زمان محاسبه در دو متد متفاوت رو نشون میداد :
public class TestSorts {
private final static int COUNT = 10000 ; // the number of slots in array(arry length)
private int[] makeArray (int n){
int[] numbers = new int[n];
for (int i=0; i<n; i++)
numbers[i] = (int)(Math.random()*n*2) ;
return numbers;
}
/**
* bubbleSort() sorts the values in arr into ascending order
* Pre: arr is not null.
* Post: The values arr[0]...arr[arr.length-1] will be
* arranged in ascending order.
*/
private void bubbleSort(int arr[]) {
int temp; // Temporary variable for swap
for (int pass = 1; pass < arr.length; pass++) // For each pass
for (int pair = 1; pair < arr.length; pair++) // For each pair
if (arr[pair-1] > arr[pair]) { // Compare
temp = arr[pair-1]; // and swap
arr[pair-1] = arr[pair];
arr[pair] = temp;
} // if
} // bubbleSort()
private void editedBubbleSort (int arr[]) {
int temp; // Temporary variable for swap
for (int pass = 0; pass < arr.length; pass++) // For each pass
for (int pair = 1; pair < arr.length-pass; pair++) // For each pair
if (arr[pair-1] > arr[pair]) { // Compare
temp = arr[pair-1]; // and swap
arr[pair-1] = arr[pair];
arr[pair] = temp;
} // if
}
/**
* print() prints the values in an array
* @param arr -- an array of integers
*/
public void print(int arr[]) {
for (int k = 0; k < arr.length; k++) // For each integer
System.out.print( arr[k] + " \t "); // Print it
System.out.println();
} // print()
/**
* main() creates a Sort object and uses it to sort an array
* of integers
*/
public static void main(String args[]) {
long start,end;
TestSorts sorter = new TestSorts();
int[] intArr = sorter.makeArray(COUNT);
// sorter.print(intArr);
int[] intArr2 = new int[COUNT];
for (int k=0; k<intArr2.length; k++)
intArr2[k]=intArr[k];
start = System.currentTimeMillis();
sorter.bubbleSort(intArr);
end = System.currentTimeMillis();
System.out.println("the original took "+(end-start)+" milliseconds to complete");
//sorter.print(intArr);
//System.out.println("the edited :");
start = System.currentTimeMillis();
sorter.editedBubbleSort(intArr2);
end = System.currentTimeMillis();
System.out.println("the editted took "+(end-start)+" milliseconds to complete");
//sorter.print(intArr2);
} // main()
} //Sort