PDA

View Full Version : سوال: استفاده از مرتب‌سازی سریع



Slytherin
سه شنبه 12 اردیبهشت 1391, 22:38 عصر
دوستان من در C++ خیلی خیلی خیلی تازه کار هستم.
این پیاده سازی الگوریتم سریع در C++ هست:

void quicksort(int array[] , int left , int right){
if (left < right){
int middle = partition(array , left , right) ;
quicksort(array , left , middle-1) ;
quicksort(array , middle+1 , right);
}
}

int partition(int array[] , int left , int right){
int middle ;

int x = array[left] ;
int l = left ;
int r = right ;
while(l < r){
while((array[l] <= x) && (l < right)) l++ ;
while((array[r] > x) && (r >= left)) r-- ;
if(l < r){
int temp = array[l];
array[l] = array[r];
array[r] = temp ;
}
}
middle = r ;
int temp = array[left];
array[left] = array[middle] ;
array[middle] = temp;
return middle ;
}
حالا چطوری میشه از این کدها در برنامه استفاده کرد و مثلا یک آرایه داد تا برنامه واسمون Sort کنه؟
اگر لطف کنید و به صورت کد مثال بزنید که واقعا ممنون میشم...
باتشکر:لبخندساده:

BeginnerProgrammer
سه شنبه 12 اردیبهشت 1391, 23:37 عصر
این کدم به آخرش اضافه کنید بعد ران بگیرید:



int main()
{
int a[4]={5,2,3,4};
quicksort(a,0,3);
cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<" "<<a[3]<<endl;
return 0;
}

Slytherin
چهارشنبه 13 اردیبهشت 1391, 00:46 صبح
این کدم به آخرش اضافه کنید بعد ران بگیرید:



int main()
{
int a[4]={5,2,3,4};
quicksort(a,0,3);
cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<" "<<a[3]<<endl;
return 0;
}


در این خط ارور میده:

quicksort(a,0,3);

BeginnerProgrammer
چهارشنبه 13 اردیبهشت 1391, 19:47 عصر
این کدو بدون ارور اجرا شد:

#include <iostream>
#include <fstream>
#include <stdio.h>
#include <string.h>
using namespace std;
int partition(int array[] , int left , int right);
void quicksort(int array[] , int left , int right){

if (left < right){

int middle = partition(array , left , right) ;

quicksort(array , left , middle-1) ;

quicksort(array , middle+1 , right);

}

}



int partition(int array[] , int left , int right){

int middle ;



int x = array[left] ;

int l = left ;

int r = right ;

while(l < r){

while((array[l] <= x) && (l < right)) l++ ;

while((array[r] > x) && (r >= left)) r-- ;

if(l < r){

int temp = array[l];

array[l] = array[r];

array[r] = temp ;

}

}

middle = r ;

int temp = array[left];

array[left] = array[middle] ;

array[middle] = temp;

return middle ;

}

int main()
{
int a[4]={5,2,3,4};
quicksort(a,0,3);
cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<" "<<a[3]<<endl;
return 0;
}
اینم عکسش البته با visual studio ران کردم(راست میگم :بامزه: ) :متعجب:
http://img4up.com/up2/12337342859796833079.png