السلام عليكم ورحمة الله ...
يسعدني ان اقدم لكم اول مشاركاتي في هذا المنتدى الرائع ...
I Don't have a new thing,but maybe it's usful for someone
امممم بقدم لكم بعض الدوال الخاصة في مواضيع الدتاء ستركشر مثل stack ,linked list ,double linked list,queue,hash tabe,tree and sort Algorithm
طبعا بدون شرح بكتفي بوضع الدوال مع ذكر بعض التعليقات (مسوي فاهم :lol: ) جميع الاكواد مكتوبة باستخدام فيجوال ستوديو ..
so let's begin
الكود الاول : عبارة عن دوال الترتيب inset-select-merge-Quick sorting ومثل ماهو واضح انو يحسب زمن الترتيب التنفيذ لكل دالة ..
- #include<ctime>
- #include<iostream>
- using namespace std;
- ////////////////////////////////// InsertionSort ////////////////////////////////////////
- void InsertionSort(int numbers[], int array_size)
- {
- int i, j, key;
- for (i=1; i < array_size; i++)
- {
- key = numbers[i];
- j = i;
- while (j > 0 && numbers[j-1] > key)
- {
- numbers[j] = numbers[j-1];
- j = j - 1;
- }
- numbers[j] = key;
- }
- }
- ////////////////////////////////// SeclectionSort ////////////////////////////////////////
- void SeclectionSort(int numbers[], int array_size)
- {
- int temp;
- for(int i=0;i<array_size;i++){
- for(int s=0;s<array_size-1;s++){
- if(numbers[i]<numbers[s]){
- temp=numbers[i];
- numbers[i]=numbers[s];
- numbers[s]=temp;}}}
- }
- /////////////////////////////////// mergeSort ////////////////////////////////////////
- void mergeSort(int array[], int start, int end)
- {
- int n = end - start + 1;
- if (n > 1)
- {
- int n1 = n / 2;
- mergeSort(array, start, start + n1 - 1);
- mergeSort(array, start + n1, end);
- int *tmp = new int[ end - start + 1 ];
- int *dest = tmp,
- *src1 = array + start,
- *src2 = array + start + n1;
- while ((src1 < array + start + n1) && (src2 <= array + end))
- {
- if (*src1 <= *src2)
- *dest++ = *src1++;
- else
- *dest++ = *src2++;
- }
- while (src1 < array + start + n1 )
- *dest++ = *src1++;
- while (src2 <= array + end)
- *dest++ = *src2++;
- memcpy( array + start, tmp, n*sizeof(int) );
- delete[] tmp;
- }
- }
- /////////////////////////////////// Quick Sort ////////////////////////////////////////
- void q_sort(int numbers[], int left, int right)
- {
- int pivot;
- int l_hold;
- int r_hold;
- l_hold = left;
- r_hold = right;
- pivot = numbers[left];
- while (left < right)
- {
- while ((numbers[right] >= pivot) && (left < right))
- right--;
- if (left != right)
- {
- numbers[left] = numbers[right];
- left++;
- }
- while ((numbers[left] <= pivot) && (left < right))
- left++;
- if (left != right)
- {
- numbers[right] = numbers[left];
- right--;
- }
- }
- numbers[left] = pivot;
- pivot = left;
- left = l_hold;
- right = r_hold;
- if (left < pivot)
- q_sort(numbers, left, pivot-1);
- if (right > pivot)
- q_sort(numbers, pivot+1, right);
- }
- /////////////////////////////////// main ////////////////////////////////////////
- int main()
- {
- clock_t start;
- int inset[5000],select[5000],merge[5000],Quick[5000];
- for(int i=0;i<5000;i++){
- Quick[i]=inset[i]=select[i]=merge[i]=rand();}
- start=clock();
- cout<<"////////////////// InsertionSort ///////////////////////////"<<endl;
- start=clock();
- InsertionSort(inset,5000);
- cout<<"The time is = "<<start-clock()<<endl;
- cout<<"////////////////// SeclectionSort///////////////////////////"<<endl;
- start=clock();
- SeclectionSort(select,5000);
- cout<<"The time is = "<<start-clock()<<endl;
- cout<<"/////////////////// mergeSort //////////////////////////////"<<endl;
- start=clock();
- mergeSort(merge,0,5000);
- cout<<"The time is = "<<start-clock()<<endl;
- cout<<"/////////////////// Quick Sort /////////////////////////////"<<endl;
- start=clock();
- q_sort(Quick, 0,5000);
- cout<<"The time is = "<<start-clock()<<endl;
- cout<<"////////////////////////////////////////////////////////////"<<endl;
- system("pause");
- return 0;
- }

