سورس کد مرتب سازی heap Sort به زبان سی پلاس پلاس
در این پست سورس کدی جالب و آموزشی که به زبان سی پلاس پلاس برنامه نویسی شده است برایتان آماده کرده ایم که می تونید در سیستم خود اجرا و استفاده نمایید.این پروژه یک پروژه مرتب سازی توده ای هست.بعلاوه می توانید را نیز از سورس ایران دریافت کنید.
// Book Name: Majmooe Kamele Proje haie barname nevisi dar C & C++ & C# // Dr.Farahnaz Mohana & Morteza Sargolzaie Javan // www.MSJavan.tk // www.Javan.tk // www.Farsibooks.ir #include <iostream.h> #include <conio.h> #include <time.h> #include <stdlib.h> void heapSort(int numbers[], int array_size); void siftDown(int numbers[], int root, int bottom); void main (void) { const n = 10; int X[n]; randomize(); for (int i=0; i<n; i++) { X[i] = rand() % 100; cout << X[i] << "\t"; } heapSort (X,n); cout<< endl; for (int i=0; i<n; i++) cout << X[i] << "\t"; getch(); } void heapSort(int numbers[], int array_size) { int i, temp; for (i = (array_size / 2)-1; i >= 0; i--) siftDown(numbers, i, array_size); for (i = array_size-1; i >= 1; i--) { temp = numbers[0]; numbers[0] = numbers[i]; numbers[i] = temp; siftDown(numbers, 0, i-1); } } void siftDown(int numbers[], int root, int bottom) { int done, maxChild, temp; done = 0; while ((root*2 <= bottom) && (!done)) { if (root*2 == bottom) maxChild = root * 2; else if (numbers[root * 2] > numbers[root * 2 + 1]) maxChild = root * 2; else maxChild = root * 2 + 1; if (numbers[root] < numbers[maxChild]) { temp = numbers[root]; numbers[root] = numbers[maxChild]; numbers[maxChild] = temp; root = maxChild; } else done = 1; } }
دیدگاه کاربران
تعداد دیدگاه های کاربران : ۰ دیدگاه