vahid18u
شنبه 07 اردیبهشت 1387, 20:36 عصر
لینک دانلود کلاسها و سورس ها و فایل .jar :
http://www.2shared.com/file/3204406/36c01e0f/java_sample.html
------------------------------------------------------------------------------------------
سورس برنامه :
/*
* Sort_algorithm.java
*
* Created on April 17, 2008, 11:23 PM
*
*/
import java.util.Random;
import java.io.*;
class Sort_algorithm{
private int input_array[];
private int size;
private int Insertion[];
private int merge[];
private int quick[];
private int bubble[];
private int temp[];
private long start_bubble;
private long start_merge;
private long start_Insertion;
private long start_quick;
private long end_bubble;
private long end_merge;
private long end_Insertion;
private long end_quick;
Sort_algorithm(int s){
size=s;
input_array=new int[size];
bubble=new int[size];
Insertion=new int[size];
quick=new int[size];
merge=new int[size];
temp=new int [size];
}
void input_data(){
Random randomNumbers=new Random();
int number;
for(int counter=0;counter<size;counter++)
{
number=1+randomNumbers.nextInt(5000);
input_array[counter]=number;
bubble[counter]=number;
Insertion[counter]=number;
quick[counter]=number;
merge[counter]=number;
}
}//input
void bubble_sort(){
int i,j,temp;
start_bubble=System.currentTimeMillis();
//bubble sort algorithm starts from here
for(i=0;i<size;i++)
{
for(j=0;j<i;j++)
{
if (bubble[i]<bubble[j]){
temp=bubble[i];
bubble[i]=bubble[j];
bubble[j]=temp;
}
}
}
System.out.println("Bubble sort was successfully done.\n");
//bubble sort algorithm finishs here
end_bubble=System.currentTimeMillis();
}
void Insertion_sort(){
int i,j,current;
start_Insertion=System.currentTimeMillis();
//Insertion sort algorithm starts from here
for(j=1;j<size;j++)
{
current=Insertion[j];
i=j-1;
while ((i>=0) &&(Insertion[i]>current) )
{
Insertion[i+1]=Insertion[i];
i--;
}//while
Insertion[i+1]=current;
}
System.out.println("Insertion sort was successfully done.\n");
//Insertion sort algorithm finishs here
end_Insertion=System.currentTimeMillis();
}
void write_in_file1(){
String s="random input data: ";
FileOutputStream f0;
try
{
f0=new FileOutputStream ("random_input.txt");
for(int i=0;i<size;i++){
s=s+input_array[i];
s=s+", ";
}
new PrintStream(f0).println (s);
System.out.println("\nrandom input data were stored to random_input.txt\n");
f0.close();
}
catch (IOException e)
{
System.err.println ("Unable to write to file random_input.txt\n");
System.exit(-1);
}
}//write_in_file1
void write_result(){
System.out.print("\nPLEASE WAIT while program writes the results to result.txt\n");
FileOutputStream f1;
try
{
f1=new FileOutputStream ("result.txt");
String s="Results: \n"
+"bubble sort run time : "+(end_bubble-start_bubble)+" ms\n"
+"Insertion sort run time : "+(end_Insertion-start_Insertion)+" ms\n"
+"Merge sort run time : "+(end_merge-start_merge)+" ms\n"
+"Quick sort run time : "+(end_quick-start_quick)+" ms\n"
+"--------------------\n"
+"bubble sort result: \n";
for(int i=0;i<size;i++){
s=s+bubble[i];
s=s+", ";}
s=s+"\nalgorithm run time : "
+(end_bubble-start_bubble)+" ms\n--------------------\n";
new PrintStream(f1).println (s);
s="Insertion sort result: \n";
for(int i=0;i<size;i++){
s=s+Insertion[i];
s=s+", ";}
s=s+"\nalgorithm run time : "
+(end_Insertion-start_Insertion)+" ms\n--------------------\n";
new PrintStream(f1).println (s);
s="Merge sort result: \n";
for(int i=0;i<size;i++){
s=s+merge[i];
s=s+", ";}
s=s+"\nalgorithm run time : "
+(end_merge-start_merge)+" ms\n--------------------\n";
new PrintStream(f1).println (s);
s="Quick sort result: \n";
for(int i=0;i<size;i++){
s=s+quick[i];
s=s+", ";}
s=s+"\nalgorithm run time : "
+(end_quick-start_quick)+" ms\n--------------------\n";
new PrintStream(f1).println (s);
f1.close();
}//try
catch (IOException e)
{
System.err.println ("Unable to write to file result.txt");
System.exit(-1);
}
}
//////////////////////////////////////////////////////////////
public void Merge_sort()
{
start_merge=System.currentTimeMillis();
//merge sort algorithm starts from here
sortArray( 0, size-1 ); // split entire array
System.out.println("merge sort was successfully done.\n");
//merge sort algorithm finishs here
end_merge=System.currentTimeMillis();
} // end method sort
private void sortArray( int low, int high )
{
// test base case; size of array equals 1
if ( ( high - low ) >= 1 ) // if not base case
{
int middle1 = ( low + high ) / 2; // calculate middle of array
int middle2 = middle1 + 1; // calculate next element over
// split array in half; sort each half (recursive calls)
sortArray( low, middle1 ); // first half of array
sortArray( middle2, high ); // second half of array
// merge two sorted arrays after split calls return
merge_it ( low, middle1, middle2, high );
} // end if
} // end method split
// merge two sorted subarrays into one sorted subarray
private void merge_it( int left, int middle1, int middle2, int right )
{
int leftIndex = left; // index into left subarray
int rightIndex = middle2; // index into right subarray
int combinedIndex = left; // index into temporary working array
int[] combined = new int[ size ]; // working array
// merge arrays until reaching end of either
while ( leftIndex <= middle1 && rightIndex <= right )
{
// place smaller of two current elements into result
// and move to next space in arrays
if ( merge[ leftIndex ] <= merge[ rightIndex ] )
combined[ combinedIndex++ ] = merge[ leftIndex++ ];
else
combined[ combinedIndex++ ] = merge[ rightIndex++ ];
} // end while
// if left array is empty
if ( leftIndex == middle2 )
// copy in rest of right array
while ( rightIndex <= right )
combined[ combinedIndex++ ] = merge[ rightIndex++ ];
else // right array is empty
// copy in rest of left array
while ( leftIndex <= middle1 )
combined[ combinedIndex++ ] = merge[ leftIndex++ ];
// copy values back into original array
for ( int i = left; i <= right; i++ )
merge[ i ] = combined[ i ];
} // end method merge
// method to output certain values in array
void Quick_sort()
{
start_quick=System.currentTimeMillis();
//quick sort algorithm starts from here
qsort(0, size-1);
System.out.println("quick sort was successfully done.\n");
//quick sort algorithm finishs here
end_quick=System.currentTimeMillis();
}
public void qsort(int low, int high)
{
if (low >= high) return;
int p = partition(low, high);
qsort(low, p);
qsort(p + 1, high);
}
private int partition(int low, int high)
{
// First element
int pivot = quick[low];
// Middle element
//int middle = (low + high) / 2;
//int pivot = a[middle];
int temp;
int i = low - 1;
int j = high + 1;
while (i < j)
{
i++; while (quick[i] < pivot) i++;
j--; while (quick[j] > pivot) j--;
if (i < j)
{
temp=quick[i];
quick[i]=quick[j];
quick[j]=temp;
}
}
return j;
}
}//Sort_algorithm
/*
* sortclass.java
*
* Created on April 17, 2008, 11:21 PM
*
*/
import java.util.Scanner;
public class sortclass {
private int arrays[];
public static void main(String args[]){
Scanner input=new Scanner(System.in);
int size;
System.out.print("Enter the size of input array : ");
size=input.nextInt();
Sort_algorithm sort_algorithm=new Sort_algorithm(size);
sort_algorithm.input_data();
sort_algorithm.write_in_file1();
sort_algorithm.bubble_sort();
sort_algorithm.Insertion_sort();
sort_algorithm.Merge_sort();
sort_algorithm.Quick_sort();
sort_algorithm.write_result();
}
}
----------------------------------------------------------------
این برنامه اولش یه عدد میگیره معادل طول آرایه ای که میخواد سورت کنه . مثلا بدید 3000
بعد به صورت راندوم عدد میریزه توش و عدد ها رو میریزه توی فایلی به نام random_input.txt در کنار فایل اجرایی .
نمونه ی فایل random_input.txt :
random input data: 1695, 3496, 3614, 3706, 4535, 2861, 4563, 2141, 2663, 3396, 4643, 264, 4501, 4095, 4679, 4121, 4948, 4300, 239, 2882, 4793, 2251, 3473, 3760, 4724, 1967, 1795, 469, 381, 1970, 2669, 3369, 1288, 1016, 4734, 2500, 1999, 838, 4041, 3302, 971, 955, 2179, 1295, 631, 2140, 1964, 3706, 177, 2190, 1664, 1380, 3357, 732, 4521, 2803, 1223, 1865, 2275, 3073, 37, 2975, 3756, 4152, 2327, 3054, 1861, 3911, 500, 1992, 3881, 3274, 4130, 841, 993, 4665, 2937, 2579, 1385, 4543, 1765, 1288, 2515, 4434, 1503, 41, 4358, 354, 3695, 4891, 906, 2442, 1743, 2193, 4411, 516, 4359, 4940, 168, 1009, 1024, 112, 2567, 710, 4343, 216, 1942, 3234, 4521, 4002, 4312, 684, 3661, 4500, 4363, 4913, 4427, 2198, 330, 1179, 4719, 1953, 1340, 3157, 1929, 645, 1112, 4930, 4236, 2000, 4394, 4038, 2625, 2530, 191, 4172, 2879, 174, 4353, 839, 2001, 2395, 1671, 2956, 1189, 689, 4156, 1068, 4660, 2318, 2947, 3840,بعد 4 الگوریتم مختلف سورت رو روش انجام میده و زمان اجرای هر کدوم رو هم میگیره . بعد نتایج سورت ها و زمان ها رو میریزه توی فایلی به اسم result.txt
نمونه ی فایل result.txt :
Results:
bubble sort run time : 401 ms
Insertion sort run time : 117 ms
Merge sort run time : 548 ms
Quick sort run time : 16 ms
--------------------
bubble sort result:
1, 1, 1, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5, 7, 8, 8, 8, 8, 9, 9, 10, 11, 12, 12, 13, 15, 16, 16, 17, 18, 19, 19, 19, 19, 21, 21, 22, 22, 23, 23, 23, 23, 24, 25, 25, 28, 29, 29, 29, 29, 29, 30, 30, 31, 31, 32, 32, 33, 33, 35, 35, 37, 37, 37, 37, 37, 38, 39, 39, 39, 39, 39, 40, 40, 41, 41, 41, 41, 41, 43, 43, 43, 44, 44, 44, 45, 45, 46, 46, 48, 48, 50, 51, 51, 51, 51, 51, 51, 52, 52, 53, 53, 54, 54, 54, 55, 55, 57, 57, 57, 57, 58, 59, 59, 59, 59, 59, 59, 59, 59, 59, 61, 61, 62, 65, 65, 65, 65, 66, 67, 67, 68, 68, 69, 69, 69, 70, 70, 71, 72, 72, 72, 73, 74, 74, 74, 75, 75, 75, 76, 76, 76, 76, 78, 79, 79, 79, 79, 79, 80, 80, 80, 80, 81, 81, 83, 84, 84, 84, 85, 85, 86, 87, 87, 87..........---------------------------
و ما مشکل کار اینجاست که توی ویندوز xp نتیجه ی quick sort همواره صفره .
اگر توی xp یا vista خواستید نتیجه ی text رو ببینید ترجیحا با wordpad ببینید نه notepad .
محیط اجراش هم توی خط فرمان فقط .
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.