SOLUTIONS:
BY AVINASH
As per my knowledge sorting with less overhead can vary from algorithm and many dependencies on algorith so i am posting Quick sort which is also a sorting algorithm with fastest.
#include"stdlib.h"
#define MAX 10
void MyQuickSort(int iLow, int iHigh, int aNumbers[]);
int MySortDivision(int iLow, int iHigh, int aNumbers[]);
int main()
{
int aNumbers[MAX];
int iCount = 0;
for(iCount =0; iCount < MAX; iCount++)
//aNumbers[iCount] = rand()%100;
scanf("%d",&aNumbers[iCount]);
printf("NUMBERS BEFORE SORTING:");
for(iCount =0; iCount < MAX; iCount++)
printf("%d ",aNumbers[iCount]);
printf("\n");
MyQuickSort(0, MAX-1,aNumbers);
printf("NUMBERS AFTER SORTING:");
for(iCount =0; iCount < MAX; iCount++)
printf("%d ",aNumbers[iCount]);
return 0;
}
void MyQuickSort(int iLow, int iHigh, int aNumbers[])
{
int iPivotElementIndex = 0;
if(iLow < iHigh)
{
iPivotElementIndex = MySortDivision(iLow, iHigh, aNumbers);
MyQuickSort(iLow, iPivotElementIndex - 1 ,aNumbers);
MyQuickSort(iPivotElementIndex + 1, iHigh, aNumbers);
}
return;
}
int MySortDivision(int iLow, int iHigh, int aNumbers[])
{
int iInternalLow = iLow;
int iInternalHigh = iHigh;
int iPivot = aNumbers[iLow];
int iLowValue,iHighValue;
while(iInternalLow < iInternalHigh)
{
iHighValue = aNumbers[iInternalHigh];
while(iPivot <= iHighValue)//changed
{
if(iInternalHigh <= iInternalLow)
break;
iInternalHigh--;
iHighValue = aNumbers[iInternalHigh];
}
aNumbers[iInternalLow] = iHighValue;
iLowValue = aNumbers[iInternalLow];
while(iPivot > iLowValue)
{
if(iInternalLow >= iInternalHigh)
break;
iInternalLow++;
iLowValue = aNumbers[iInternalLow];
}
aNumbers[iInternalHigh] = iLowValue;
}
aNumbers[iInternalLow] = iPivot;
return iInternalLow;
}
2 comments:
is the sorting for numbers or strings...............
try for numbers once done we can go for strings...
Post a Comment