Example #1
0
void demo(int tam_vec, double factor){
    
    Vector<Dni> v = bank_gen(tam_vec);
    
    InsertionSort<Dni> is;
    BubbleSort<Dni> bs;
    ShellSort<Dni> ss(factor);
    QuickSort<Dni> qs;
    MergeSort<Dni> ms;
    
    cout << "Vector: "; v.mostrar();
    cout << " ## InsertionSort: " << endl;
    is.ordenar(v, v.getSize());
    
    cout << "Vector: "; v.mostrar();    
    cout << " ## BubbleSort: " << endl;
    bs.ordenar(v, v.getSize());

    cout << "Vector: "; v.mostrar();
    cout << " ## ShellSort: " << endl;
    ss.ordenar(v, v.getSize());

    cout << "Vector: "; v.mostrar();
    cout << " ## QuickSort: " << endl;
    qs.ordenar(v, v.getSize());
        
    cout << "Vector: "; v.mostrar();
    cout << " ## MergeSort: " << endl;
    ms.ordenar(v, v.getSize());        
}
Example #2
0
int 
main (int argc, char *argv[]) 
{
    if (argc != 3) {
        cout << "Usage: " << argv[0] << " [list file] [list size]" << endl;
        return -1;
    }

    char buffer[256];
    ifstream myfile( argv[1] );

    int length = atoi( argv[2] );
    int *list = new int[length];

    for (int i = 0; i < length; i++) {
      myfile.getline( buffer, 100 );
      list[i] = atoi( buffer );
    }

    QuickSort *ms = new QuickSort( list, length );
    ms->quicksort();
    cout << *ms << endl;

    delete[] list;
    delete ms;
    return 0;
}
void TestClass::TestSearchAlgorithms()
{
    cout << "TESTING SEARCH ALGORITHMS..." << endl;

    //Testing all algorithms
    for(auto s : m_vecSearchAlg)
    {
        cout << endl;
        cout << "----- " << s->GetSearchName() << " -----" << endl;
        std::vector<int> v = {1, 5, 9, 14, 54, 2, -2, 48, 72, 3};
        size_t pos = 0;
        size_t expectedResult = 0;
        if(s->GetSearchName().compare("Binary Search") == 0)
        {
            QuickSort sort;
            sort.Sort(v);
            expectedResult = 6;
            pos = s->Search(v, 14);
        }
        else
        {
            expectedResult = 3;
            pos = s->Search(v, 14);
        }
        cout << "Search should return " << expectedResult
             << " and returned " << pos << "." << endl;
        cout << "----- " << s->GetSearchName() << " Finished -----" << endl;
    }

    cout << "TESTING SEARCH ALGORITHMS FINISHED!!!" << endl;
}
int main()
{
	//待排数据输入方式:
		/*int N = 0;
		cout << "排序数据个数:\n";
		cin >> N;
		int* A = new int[N];
		cout << "请输入待排序的数据:\n";
		for (int i = 0; i < N; i++)
		{
		cin >> A[i];
		}*/
	//数据直接给定	
		int B[N] = { 1, 6, 3, 5, 2, 4 };
		int C[13] = { 54, 35, 48, 36, 27, 12, 44, 44, 8, 14, 26, 17, 2 };
		int* A = C;

	//从文件中读取,大量数据,计算时间复杂度
		
	printResult("待排原始数据:", C, N);

	BubbleSort bubble;
	bubble.bubbleSort(A,N);
	printResult("bubbleSort", A, N);

	SelectionSort select;
	select.selectionSort(A, N);
	printResult("selectSort", A, N);

	InsertionSort insert;
	insert.insertionSort(A, N);
	printResult("InsetSort", A, N);

	MergeSort merge;
	merge.mergeSort(A, N);
	printResult("MergeSort", A, N);

	QuickSort qucik;
	qucik.quickSort(A, N);
	printResult("QucikSort",A,N);

	QuickSort2 qucik2;
	qucik2.quickSort(A, N);
	printResult("QucikSort2", A, N);

	HeapSort heap;
	heap.heapSort(A, N);
	printResult("heapSort", A, N);

	HeapSort2 heap2;
	heap2.heapSort(A, N);
	printResult("heapSort2", A, N);


	ShellSort shell;
	shell.shellSort(A,N);
	printResult("shellSort", A, N);

	return 0;
}
Example #5
0
/**
 * Calcula o tempo de ordenação com a função Clock.
 */
double ordenaVetorClock(int algorithm, int size) {
    clock_t clock_init;

    // Algoritmos de busca
    QuickSort qs = QuickSort();
    BubbleSort bs = BubbleSort();
    MergeSort ms = MergeSort();

    // Escolhe o algoritmo que deve ser testado
    switch (algorithm) {
        case QUICK_SORT:
            clock_init = clock();
            qs.start(vetorQuickSort, size);
            return clock() - clock_init;
        case BUBBLE_SORT:
            clock_init = clock();
            bs.start(vetorBubbleSort, size);
            return clock() - clock_init;
        case MERGE_SORT:
            clock_init = clock();
            ms.start(vetorMergeSort, size);
            return clock() - clock_init;
    }
    return -1;
}
Example #6
0
/**
 * Calcula o tempo de ordenação com a função Clock.
 */
double ordenaVetorTime(int algorithm, int size){
    time_t time_init;

    // Algoritmos de busca
    QuickSort qs = QuickSort();
    BubbleSort bs = BubbleSort();
    MergeSort ms = MergeSort();

    // Escolhe o algoritmo que deve ser testado
    switch (algorithm) {
        case QUICK_SORT:
            time(&time_init);
            qs.start(vetorQuickSort, size);
            return time(NULL) - time_init;
        case BUBBLE_SORT:
            time_init = time(NULL);
            bs.start(vetorBubbleSort, size);
            return time(NULL) - time_init;
        case MERGE_SORT:
            time_init = time(NULL);
            ms.start(vetorMergeSort, size);
            return time(NULL) - time_init;
        default:
            cout << "ERROR" << endl;
        break;
    }
    return -1;
}
int main(){
    vector<int> test1 {0};
    vector<int> test2 {-1, 3, 2, 4,-10, 100};
    QuickSort solver;
    solver.qsort(test1);
    solver.qsort(test2);
    assert(solver.isSorted(0, test1.size()-1, test1));
    assert(solver.isSorted(0, test2.size()-1, test2));
}
Example #8
0
int TestQuickSort_IntArray()
{
	int int_array [] = {0, 4, 3, 6, 2, 1, 5, 7, 9, 8 };
	QuickSort<int> *qs = new QuickSort<int>();
	qs->Sort(int_array, 10);
	for (int i = 0; i < 10; i++) {
		TEST_ASSERT(int_array[i] == i);
	}

	delete qs;
	return 0;
}
void Tester<T>::STLQuickSortTest(double TimeTable[], int& timeCount) // [5]
{//STL 퀵소트 TEST
	QuickSort<T> quick;
	ioHandler io;
	clock_t begin, end;

	begin = clock();
	quick.STLQuickSort(arr, size);
	end =  clock();

	io.setTime(TimeTable,timeCount, ((double)(end - begin))/CLOCKS_PER_SEC);
}
void Tester<T>::median3_iterQuickSortTest(double TimeTable[], int& timeCount) // [4]
{//중간값(메디안) 반복 퀵소트 TEST
	QuickSort<T> quick;
	ioHandler io;
	clock_t begin, end;

	begin = clock();
	quick.median3_iterQuickSort(arr, 0, size-1);
	end =  clock();

	io.setTime(TimeTable,timeCount, ((double)(end - begin))/CLOCKS_PER_SEC);
}	
int main()
{
    std::vector<int> v1 { 1, -8, 4, 48, -10, 700, 5, -7, 54545, -777 };

    QuickSort<decltype(v1)> qs;
    qs.sort(v1);

    for (auto const & element : v1)
    {
        std::cout << element << std::endl;
    }

    return 0;
}
Example #12
0
int main(int argc, const char * argv[]) {
    
    int array[] = {3,4,5,2,1,0,22,33,12,-20,45,333,87,8};
    int len = sizeof(array) / sizeof(*array);
    
    vector<int> dat(array, array+len);
    
    QuickSort qs;
//    qs.setData(array, len);
    qs.setData(dat);
    
    qs.sort();
    
    return 0;
}
Example #13
0
void estadistica(int n_pruebas, int tam_vec, double factor){
    //Instanciacion del banco de pruebas
    Vector<Dni>* bank_pruebas = new Vector<Dni>[n_pruebas];
    srand(time(NULL));
    
    //Instanciar algoritmos
    InsertionSort<Dni> is;
    BubbleSort<Dni> bs;
    ShellSort<Dni> ss(factor);
    QuickSort<Dni> qs;
    MergeSort<Dni> ms;
    
     //Aplicar algoritmos al banco de pruebas
    for(int i = 0; i < n_pruebas; i++){
        bank_pruebas[i] = bank_gen(tam_vec);
        cout << "Vector " << i << " : "; bank_pruebas[i].mostrar();
         
        cout << " ## InsertionSort: " << endl;
        is.ordenar(bank_pruebas[i], bank_pruebas[i].getSize());
        
        cout << "Vector : "; bank_pruebas[i].mostrar();
        cout << " ## BubbleSort: " << endl;
        bs.ordenar(bank_pruebas[i], bank_pruebas[i].getSize());
        
        cout << "Vector: " ; bank_pruebas[i].mostrar();
        cout << " ## ShellSort: " << endl;
        ss.ordenar(bank_pruebas[i], bank_pruebas[i].getSize());

        cout << "Vector: " ; bank_pruebas[i].mostrar();
        cout << " ## QuickSort: " << endl;
        qs.ordenar(bank_pruebas[i], bank_pruebas[i].getSize());
        
        cout << "Vector: " ; bank_pruebas[i].mostrar();
        cout << " ## MergeSort: " << endl;
        ms.ordenar(bank_pruebas[i], bank_pruebas[i].getSize());
        
        cout << "~~~~~~" << endl;
    }
        
    bs.setAvg( (double)bs.getTot() / n_pruebas);
    is.setAvg( (double)is.getTot() / n_pruebas);
    ss.setAvg( (double)ss.getTot() / n_pruebas);
    qs.setAvg( (double)qs.getTot() / n_pruebas);
    ms.setAvg( (double)ms.getTot() / n_pruebas);

    cout << endl;
    cout << "Estadisticas" << endl;
    cout << "Algoritmo     " << "    min " << "    avg " << "    max " << " total" << endl;
    cout << setprecision(5);
    cout << "InsertionSort   " << is.getMin() << "    " << is.getAvg() << "    " << is.getMax() << "     " << is.getTot() << endl;
    cout << "BubbleSort      " << bs.getMin() << "    " << bs.getAvg() << "    " << bs.getMax() << "     " << bs.getTot() << endl;
    cout << "ShellSort       " << ss.getMin() << "    " << ss.getAvg() << "    " << ss.getMax() << "     " << ss.getTot() << endl;
    cout << "QuickSort       " << qs.getMin() << "    " << qs.getAvg() << "    " << qs.getMax() << "     " << qs.getTot() << endl;
    cout << "MergeSort       " << ms.getMin() << "    " << ms.getAvg() << "    " << ms.getMax() << "     " << ms.getTot() << endl;

}
Example #14
0
double test1() {
	int t0[] = {1,2,4,3,5,6};
	vector <int> p0(t0, t0+sizeof(t0)/sizeof(int));
	QuickSort * obj = new QuickSort();
	clock_t start = clock();
	double my_answer = obj->getEval(p0);
	clock_t end = clock();
	delete obj;
	cout <<"Time: " <<(double)(end-start)/CLOCKS_PER_SEC <<" seconds" <<endl;
	double p1 = 1.0;
	cout <<"Desired answer: " <<endl;
	cout <<"\t" << p1 <<endl;
	cout <<"Your answer: " <<endl;
	cout <<"\t" << my_answer <<endl;
	if (p1 != my_answer) {
		cout <<"DOESN'T MATCH!!!!" <<endl <<endl;
		return -1;
	}
	else {
		cout <<"Match :-)" <<endl <<endl;
		return (double)(end-start)/CLOCKS_PER_SEC;
	}
}
int main(int argc, char** argv)
#endif
{
    HashTableST<std::string, int> myHahTableST;
    myHahTableST.put("Skornyakov", 2);
    myHahTableST.put("Skornyakov", 3);
    myHahTableST.put("Abramov", 3);
    myHahTableST.put("Losev", 4);
    myHahTableST.put("Utin", 5);

    int val = 0;
    val = myHahTableST.get("Utin");
    myHahTableST.remove("Skornyakov");



    RBTreeST<std::string, int> phoneNumbers;
    phoneNumbers.put("Skornyakov", 2);
    phoneNumbers.put("Abramov", 3);
    phoneNumbers.put("Losev", 4);
    phoneNumbers.put("Utin", 5);

    bool test = phoneNumbers.contains("Pukin");
    test = phoneNumbers.contains("Utin");


    while(1) {
        MaxPQ<int> maxPQ;

        srand((unsigned int)time(NULL));
        int arr[1000];
        for(int i = 0; i < 1000; i++) {
            arr[i]=rand();
        }

        /*
        heapsort<int>(arr, 1000);

        for(int i = 0; i < 10000; i++){
            maxPQ.insert(rand());
        }

        for(int i = 0; i < 10000; i++){
            int k;
            while(maxPQ.delMax(&k)){
                cout << k << " ";
            }
        }
        cout << endl;*/

        BinTreeST<string, int> binTreeST;
        binTreeST.put("Skornyakov", 14);
        binTreeST.put("Abramov", 12);
        binTreeST.put("Aaskold", 12);
        binTreeST.put("Antonov", 12);
        binTreeST.put("Ivanov", 12);
        binTreeST.put("Sidorov", 13);
        binTreeST.put("Nesterov", 11);
        binTreeST.put("Nesterenko", 11);
        binTreeST.put("Kolcov", 11);
        int bstSize = binTreeST.size();
        binTreeST.remove("Abramov");
        bstSize = binTreeST.size();
        binTreeST.remove("Skornyakov");
        bstSize = binTreeST.size();
        binTreeST.remove("Aaskold");
        bstSize = binTreeST.size();

        /*
        for(int i = 0; i < 1000; i++){
            string newStr;
            newStr.insert(newStr.end(), (char)(rand()%93+33));
            newStr.insert(newStr.end(), (char)(rand()%93+33));
            newStr.insert(newStr.end(), (char)(rand()%93+33));
            binTreeST.put(newStr, rand()%101);
        }*/


        int val = binTreeST.get("Skornyakov");
        std::string searchitem("Azotov");
        string floorVal = binTreeST.floor(searchitem);
        string ceilingVal = binTreeST.ceiling(searchitem);
        std::cout << "floor(" << searchitem <<") = " << floorVal << endl;
        std::cout << "ceiling(" << searchitem <<") = " << ceilingVal << endl;
        std::cout << "rank(" << searchitem <<") = " << binTreeST.rank(searchitem) << endl;



        BinSearchST<string, int> binarySearchST;
        binarySearchST.put("���������", 14);
        binarySearchST.put("���������", 12);
        binarySearchST.put("�������", 13);
        binarySearchST.put("����a", 11);
        binarySearchST.put("���������", 11);
        binarySearchST.put("���������a", 11);
        binarySearchST.remove("���������a");


        for(int i = 0; i < 1000; i++) {
            string newStr;
            newStr.insert(newStr.end(), (char)(rand()%93+33));
            newStr.insert(newStr.end(), (char)(rand()%93+33));
            newStr.insert(newStr.end(), (char)(rand()%93+33));
            binarySearchST.put(newStr, rand()%101);
        }

        val = binarySearchST.get("���������");
        val = binarySearchST.get("���������");
        val = binarySearchST.get("���������a");
        val = binarySearchST.get("���������");

        vector<int> intVec;

        for(int i = 0; i < 1000000; i++) {
            intVec.push_back(rand()) ;
        }

        // Quicksort
        cout << "Quicksort:" << endl;
        QuickSort<int> intQuicksort;
        Mergesort<int> intMergeSort;

        time_t before, after;
        time(&before);

        //qsort(&intVec[0], intVec.size(), sizeof(int), compare);
        intQuicksort.sort(intVec);
        //std::sort(intVec.begin(), intVec.end());
        //intMergeSort.sort(intVec);
        time(&after);
        double sec = difftime(after, before);

        if(intQuicksort.isSorted(intVec))
            cout << "Sorted";
        else
            cout << "Not sorted";

        cout << endl;
    }
    /*
    // Mergesort
    cout << "Mergesort" << endl;
    Mergesort<int> intMergeSort;
    //intMergeSort.sort(intVec);
    intMergeSort.bottomUpSort(intVec);

    for(std::vector<int>::iterator it = intVec.begin(); it != intVec.end(); ++it){
    cout << *it << " ";
    }
    cout << endl;
    */
    /*
    // Shellsort
    cout << "Shellsort" << endl;
    Shell<int> intShellSort;
    intShellSort.sort(intVec);

    for(std::vector<int>::iterator it = intVec.begin(); it != intVec.end(); ++it){
    cout << *it << " ";
    }
    cout << endl;
    */

    /*
    // Insertion sort
    cout << "Insertion sort: " << endl;
    Insertion<int> intInsertion;

    intInsertion.sort(intVec, 0, 20);
    for(std::vector<int>::iterator it = intVec.begin(); it != intVec.end(); ++it){
    cout << *it << " ";
    }
    cout << endl;*/

    /*
    // Selection sort
    cout << "Selection sort: " << endl;
    Selection<int> intSelection;
    intSelection.sort(intVec);

    for(std::vector<int>::iterator it = intVec.begin(); it != intVec.end(); ++it){
    cout << *it << " ";
    }
    cout << endl;
    */

    // array Q implementation
    array_impl_q::Queue<int> arrayQ;
    int itemsCount = 100;
    cout << "Enqueue " << itemsCount << " items" << endl;
    for (int i = 0; i < itemsCount; i++) {
        arrayQ.enqueue(i);
    }

    itemsCount = 90;
    cout << "Dequeue " << itemsCount << " items" << endl;
    try {
        for (int i = 0; i < itemsCount; i++) {
            cout << arrayQ.dequeue() << " ";
        }
        cout << endl;
    }
    catch(const char *str) {
        cout << endl << str << endl;
    }
    catch(...) {
        cout << endl << "Unknown exception" << endl;
    }


    /*
    // linked list Q implementation
    linklist_q::Queue<int> linkedListQ;
    unsigned int itemsCount = 1500000;
    cout << "Enqueue " << itemsCount << " items" << endl;
    for (int i = 0; i < itemsCount; i++) {
    linkedListQ.enqueue(i);
    }
    itemsCount = 1500000;
    cout << "Dequeue " << itemsCount << " items" << endl;
    try{
    for (int i = 0; i < itemsCount; i++) {
    cout << linkedListQ.dequeue() << " ";
    }
    cout << endl;
    }
    catch(const char *str){
    cout << endl << str << endl;
    }
    catch(...){
    cout << endl << "Unknown exception" << endl;
    }
    */




    /*
    // linked list implementation stack
    cout << "****Stack linked list implementation****" << endl;
    cout << "stack push(1-100)" << endl;
    linked_list_stack::Stack<int> integerStack;
    for (int i = 0; i < 100000; i++) {
    integerStack.push(i);
    }
    try {
    cout << "stack pop(105)" << endl;
    for (int i = 0; i < 105000; i++) {
    cout << integerStack.pop() << " ";
    }
    } catch (const char *p) {
    cout << endl << p << endl;
    } catch (...) {
    cout << "Unknown exception" << endl;
    }

    cout << endl;
    cout << "stack push(1-100)" << endl;
    for (int i = 0; i < 100; i++) {
    integerStack.push(i);
    }
    cout << "stack pop all" << endl;
    while (!integerStack.isEmpty()) {
    cout << integerStack.pop() << " ";
    }

    cout << endl;

    // array implementation stack
    cout << "****Stack resizing array implementation****" << endl;
    cout << "stack push(1-100)" << endl;
    array_impl_stack::Stack<int> integerArrayBasedStack;
    for (int i = 0; i < 100; i++) {
    integerArrayBasedStack.push(i);
    }

    try {
    cout << "stack pop(105)" << endl;
    for (int i = 0; i < 105; i++) {
    cout << integerArrayBasedStack.pop() << " ";
    }
    } catch (const char *p) {
    cout << endl << p << endl;
    } catch (...) {
    cout << "Unknown exception" << endl;
    }

    cout << "stack push(1-100)" << endl;
    for (int i = 0; i < 100; i++) {
    integerArrayBasedStack.push(i);
    }
    cout << "stack pop all" << endl;
    try {
    while (!integerArrayBasedStack.isEmpty()) {
    cout << integerArrayBasedStack.pop() << " ";
    }
    } catch (const char* p) {
    cout << endl << p << endl;
    } catch (...) {
    cout << endl << "Unknown exception" << endl;
    }
    cout << endl;*/

    return 0;
}
Example #16
0
void TestSortingAlgos() {

	try
	{
		BubbleSort testBObj;
		int arrB[ARRAY_SIZE] = { 15,3,12,10,1,9,6,11,5,4 };

		testBObj.LoadData(arrB, ARRAY_SIZE);
		testBObj.Print();
		testBObj.Sort();

		cout << "Bubble Sort Output:";
		testBObj.Print();

		SelectionSort testSObj;
		int arrS[ARRAY_SIZE] = { 15,3,12,10,1,9,6,11,5,4 };

		testSObj.LoadData(arrS, ARRAY_SIZE);
		testSObj.Print();
		testSObj.Sort();

		cout << "Selection Sort Output:";
		testSObj.Print();


		InsertionSort testIObj;
		int arrI[ARRAY_SIZE] = { 15,3,12,10,1,9,6,11,5,4 };

		testIObj.LoadData(arrI, ARRAY_SIZE);
		testIObj.Print();
		testIObj.Sort();

		cout << "Insertion Sort Output:";
		testIObj.Print();


		MergeSort testMObj;

		int arrM[ARRAY_SIZE] = { 15,3,12,10,1,9,6,11,5,4 };

		testMObj.LoadData(arrM, ARRAY_SIZE);
		testMObj.Print();
		testMObj.Sort();

		cout << "Insertion Sort Output:";
		testMObj.Print();


		QuickSort testQObj;

		int arrQ[] = { 15,3,12,10,1,9,6,11,5,4, 12, 8,1, -23, 87,45, 12, 423 };

		testQObj.LoadData(arrQ, sizeof(arrQ)/sizeof(int));
		testQObj.Print();
		testQObj.Sort();

		cout << "Quick Sort Output:";
		testQObj.Print();



		HeapSort testHObj;

		int arrH[] = { 15,3,12,10,1,9,6,11,5,4, 12, 8,1, -23, 87,45, 12, 423 };

		testHObj.LoadData(arrH, sizeof(arrH) / sizeof(int));
		testHObj.Print();
		testHObj.Sort();

		cout << "Heap Sort Output:";
		testHObj.Print();


		QuickSortRandomized  testQRObj;

		int arrQR[] = { 15,3,12,10,1,9,6,11,5,4, 12, 8,1, -23, 87,45, 12, 423 };

		testQRObj.LoadData(arrQR, sizeof(arrQR) / sizeof(int));
		testQRObj.Print();
		testQRObj.Sort();

		cout << "Heap Sort Output:";
		testQRObj.Print();

		HeapSortRevised  testHSRObj;

		int arrHSR[] = { 15,3,12,10,1,9,6,11,5,4, 12, 8,1, -23, 87,45, 12, 423 };

		testHSRObj.LoadData(arrHSR, sizeof(arrHSR) / sizeof(int));
		testHSRObj.Print();
		testHSRObj.Sort();

		cout << "Heap Sort Output:";
		testHSRObj.Print();

	}
	catch (const std::exception& E)
	{
		cerr << "Caught exception \"" << E.what() << "\"\n";
	}
	catch (...)
	{
		cerr << "Caught unknown exception";
	}

}