تم النشر منذ 23 Jul 2012 السلام عليكمالإصدار الأول من هذه السلسلة يتكون من أربعة أجزاء:الجزء الأولالجزء الثانيالجزء الثالثالجزء الرابعفي المرفقات, الإصدار الأول في ملف PDF.تحياتي.Algorithmes de tri et de recherche.pdf 1 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 22 Oct 2012 السلام عليكموصلني صباح اليوم إيميل من إدارة موقع كتب يُفيد بقبول الكتاب : خوارزميات البحث و الترتيب - الإصدار الأول تحياتي. 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 23 Oct 2012 جزاك الله خير اتمنى ان يحتوي على الترتيب المتوازي و الديناميكي و ليس فقط الترتيب المتسلسل 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 23 Oct 2012 بالنسبة للترتيب الفقاعي هناك تحسين آخر يمكنك عمله ؟!! لنفرض ان المصفوفة ترتبت من اول مره اي في اول pass هل ستكمل حلقة for الاولى حتى النهاية ؟؟هل يمكنك ان تشرح خوارزمية الترتيب الفقاعي المتوازية ؟! 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 23 Oct 2012 بالنسبة للترتيب الفقاعي هناك تحسين آخر يمكنك عمله ؟!!لنفرض ان المصفوفة ترتبت من اول مره اي في اول pass هل ستكمل حلقة for الاولى حتى النهاية ؟؟ذكرتُ هذه الإضافة في مقالة الــ Bubble sort, انظر :...لاحظ معي أنه تم ترتيب عناصر الجدول مع أن الحلقة لم تنتهي بعد فما زالت دورتان i=4, i=5.ما رأيك لو أضفنا شرطا بسيطا يتعلق بالخروج من الدالة إذا وصلت الخوارزمية إلى ترتيب الجدول قبل انتهاء الحلقة ؟إضافة بسيطة :الفكرة ببساطة تكمن في استخدام متغير منطقي وتغيير قيمته عندما يتم تبادل محتوى خانتين. عندما نجد أنه لم تتغير قيمة المتغير منطقي في إحدى الدورات فهذا يعني أن خانات الجدول أصحبت مُرتبة بشكل صحيح.هل يمكنك ان تشرح خوارزمية الترتيب الفقاعي المتوازية ؟!للأسف لا أملك حالياً الوقت الكافي للرد على سؤالك, أرجو المعذرة.يُمكنني أن أخصص لسؤالك مقالة منفردة لاحقاً نظراً لأهمية الموضوع. 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 24 Oct 2012 @ خوارزم: كنت قرأت موضوعك وكتبت برنامج للفرز وأضفت وظيفة عادية للفرز إسمها bsort_sort وأخرى bsort_sort_thread تفرز عن طريق إنشاء عملية موازية وحيدة thread, لافائدة منها وحدها بل سيفيد إذا كنت تفرز أكثر من مصفوفة بحيث كل عملية تتولى مصفوفة أو تقسم المصفوفة على أكثر من عملية. يُمكنك أخذ الأفكار منه.#define _WIN32_WINNT 0x0500#include <windows.h>#include <stdio.h>#define NELEMENTS(x) (sizeof(x) / sizeof(*(x)))#define SWAP(a, b) \ do {\ a ^= b;\ b ^= a;\ a ^= b;\ } while(0);typedef struct _SortObject { int *array; unsigned int nelements;} SortObject;SortObject *bsort_new(int *array, unsigned int nelements);void bsort_destroy(SortObject *sort);void bsort_dump(SortObject *sort, char *name);void bsort_sort(SortObject *sort);void bsort_sort_thread(SortObject *sort);DWORD WINAPI bsort_thread_map_sort(void *sort);int main(int argc, char **argv){ int array_one[] = {9, 10, 1, 5, 7, 4, 6, 3, 2, 8}; int array_two[] = {11, 13, 16, 20, 18, 15, 12, 14, 17, 19}; SortObject *obj_one = NULL; SortObject *obj_two = NULL; obj_one = bsort_new(&array_one[0], NELEMENTS(array_one)); if( obj_one == NULL ) { perror("Error"); return -1; } obj_two = bsort_new(&array_two[0], NELEMENTS(array_two)); if( obj_two == NULL ) { perror("Error"); bsort_destroy(obj_one); return -1; } bsort_dump(obj_one, "array_one ="); bsort_sort(obj_one); bsort_dump(obj_one, "array_one ="); bsort_dump(obj_two, "array_two ="); bsort_sort_thread(obj_two); bsort_dump(obj_two, "array_two ="); bsort_destroy(obj_one); bsort_destroy(obj_two); return 0;}SortObject *bsort_new(int *array, unsigned int nelements){ SortObject *sort = NULL; if( (sort = (SortObject*) malloc(sizeof(SortObject))) == NULL ) return NULL; sort->array = array; sort->nelements = nelements; return sort;}void bsort_destroy(SortObject *sort){ free(sort);}void bsort_dump(SortObject *sort, char *name){ unsigned int i; printf("%s -> {", name); for( i = 0 ; i < sort->nelements - 1; i++ ) printf("%d, ", sort->array[i]); printf("%d}\n", sort->array[i]);}void bsort_sort(SortObject *sort){ unsigned int i; int keep_sorting = 1; while(keep_sorting) { keep_sorting = 0; for( i = 0 ; i < sort->nelements - 1 ; i++ ) { if( sort->array[i+1] < sort->array[i]) { SWAP(sort->array[i+1], sort->array[i]); keep_sorting = 1; } } }}DWORD WINAPI bsort_thread_map_sort(void *sort){ bsort_sort((SortObject *) sort); return 0;}void bsort_sort_thread(SortObject *sort){ DWORD dwThreadId; HANDLE hThread; hThread = CreateThread(0, 0, bsort_thread_map_sort, (void *) sort, CREATE_SUSPENDED, &dwThreadId); if(hThread == NULL) { printf("Error: bsort_sort_thread\n"); exit(-1); } ResumeThread(hThread); WaitForSingleObject(hThread, INFINITE); CloseHandle(hThread);}مراجع : Win32 Multithreading and Synchronization | Creating Threads 2 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 7 Jan 2015 السلام عليكمهذه الداله ترتب خطأمطلوب الترتيب حسب الارقملكنها با ترتب بالطريقه الصحيحهارجو المساعدهint t,h=o no[50];a=fopen(fopen("c:\\monam.txt","rb");rewind(a);if(a==0){printf("error");getch();exit(1);}fscanf(a,"%d%s%d%d%d",&st.nu,&st.name,&st.arbic,&st.english,&st.c);while(!feof(a){st.nu==no[h];h++fscanf(a,"%d%s%d%d%d",&st.nu,&st.name,&st.arbic,&st.english,&st.c);}fclose(a);for(int i=0;i<h;i++)for(int j=0;j<h;j++)if(no[j]>no[j+1])int temp=no[j];no[j]=no[j+1];no[j+1]=temp;}for(int r=0;r<h;r++){printf("\n%d",no[r]);}printf("\n \t to pack press 0");scanf("%d",&t);if(t==0)getch();goto w;} 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
تم النشر منذ
السلام عليكم
الإصدار الأول من هذه السلسلة يتكون من أربعة أجزاء:
في المرفقات, الإصدار الأول في ملف PDF.
تحياتي.
Algorithmes de tri et de recherche.pdf
شارك هذا الرد
رابط المشاركة
شارك الرد من خلال المواقع ادناه