# Native Code > برنامه نویسی با C > برنامه نویسی با Borland C++‎ Builder >  مرتب سازی سریع

## eas_m66

سلام
من برنامه مرتب سازی سریع البته غیر بازگشتیش رو نوشتم ولی مشکل داره اگه می تونید کمکم کنید ممنون میشم.
کد:
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#define size 5
void quick_sort (int arr[ ] ,int n);
class stack
{
public:
stack();
int empty();
void push(int x);
int pop(int &);
private:
int mytop;
int items[size];
};
stack::stack()
{
mytop=-1;
}
////////////////////////////
int stack::empty()
{
return (mytop==-1);
}
////////////////////////////
void stack::push(int x)
{
int overflow;
if(mytop==size-1)
overflow=1;
else
{
overflow=0;
items[++mytop]=x;
}
}
//////////////////////////
int stack::pop(int &x)
{
int underflow;
if(empty())
underflow=1;
else
{
underflow=0;
 return x=items[mytop--];
}
}
 /////////////////////////////////////////////////
int partition (int arr[ ] , int low , int high)
{
 int lb = low + 1 , rb = high , temp , pivot = arr[ low ] , p;
 while (lb <= rb)
 {
  while (arr[ lb ] <= pivot && lb <= rb)
 lb++;
  while (arr[ rb ] > pivot && lb <= rb)
 rb--;
  if (lb < rb)
  {
 temp = arr[ lb];
 arr[ lb ] = arr[ rb];
 arr[ rb ] = temp;
  }
 }
 if (rb == high)
  p = high;
else if(rb == low)
  p = low;
 else
  p = lb-1;
 arr[ low ] = arr[ p];
 arr[ p ] = pivot;
 return p;
}
void quick_sort (int arr[ ] ,int n)
{
 stack st;
 st.push(0);
 st.push(n-1);
 int low , p , high;
 while(! st.empty())
 {
  high = st.pop(n);
  low = st.pop(n);
  p = partition(arr , low , high);
  if (p > low)
  {
 st.push(low);
 st.push(p-1);
  }
  if (p < high)
 {
 st.push(p + 1);
 st.push(high);
  }
}
}
int main()
{
 int low,high,i,arr[10];
 clrscr();
 for(i=0;i<10;i++)
 cin>>arr[i];
 quick_sort(arr,i);
 cout<<"arry:"<<arr[i];
 getch();
 return 0;
 }

----------


## pesar irooni

سلام دوست عزیز 
مشکل برنامه ات اینه که شرط بررسی overflow ات اشتباهه و در برنامه ات Overflow رخ میده. size-1 میشه 4 و عدد 4 جزء اندیسهای صحیح آرایه item است چون size=5 و اندیسها از 0 تا 4 معتبره. اما برنامه شما اگه mytop=4 باشه که یه مقدار صحیح برای mytop است در برنامه ات Overflow رخ میده.
پس اگه شرط رو به mytop = size تغییر بدی برنامه درست عمل میکنه.

موفق باشی.

----------


## ICEMAN

اینجا مجموع معمول ترین تکنیک های sort و همراه سورس گذاشتم 
https://barnamenevis.org/showth...ewpost&t=95224

----------

