| | |
Array Index Problem in Quick Sort
Please support our C# advertiser: Intel Parallel Studio Home
![]() |
•
•
Join Date: Mar 2007
Posts: 29
Reputation:
Solved Threads: 0
Hi,
I have problem when i get an array using I get "Array Index Out of Bound" in QuickS function
Please help me in correcting quicksort function
I have problem when i get an array using I get "Array Index Out of Bound" in QuickS function
C# Syntax (Toggle Plain Text)
getArray(int [] arr) for (i = 0; i < arr.Length; i++) { String val = Console.ReadLine(); arr[i] = Convert.ToInt32(val); } public static void quicks(int lo, int hi, int[] arr) { int i = lo; hi = arr.Length; int j = hi; int pivot; pivot = arr[(lo + hi) / 2]; if (lo >= hi) { return; } Console.WriteLine(pivot); do { while (arr[i] < pivot) i++; while (arr[j] > pivot) // when it comes here it says Array // out of bound problem j--; if (i < j) { int temp = a[i]; a[i] = a[j]; a[j] = temp; } } while(i < j ); // end of do condition if (lo < j) quicks(lo, j,arr); if (i < hi) quicks(i, hi,arr);
•
•
Join Date: Mar 2007
Posts: 29
Reputation:
Solved Threads: 0
•
•
•
•
Remove "hi = arr.Length;" and pass in arr.Length-1 as the hi parameter on your first call to the function.
C# Syntax (Toggle Plain Text)
public static void quicks(int [] arr,int lo, int hi) { int i = lo; int temp; int j = hi; int pivot; pivot = arr[(lo + hi) / 2]; if (i >= j) { return; } while (i < j) { while (i<j && arr[i] < pivot) { i++; } while (i<j && arr[j] >= pivot) { j--; } if (i < j) { temp = a[i]; a[i] = a[j]; a[j] = temp; } } // end of do condition if (j < i) { temp = j; j = i; i = temp; } // i took these two below recursive functions from web and i am also getting problem now in below functions Error="System.StackOverFlowException" // Can you help me in this and also if tell me what they do if (lo<j) quicks(arr,lo, j); if(i<hi) quicks(arr,j,hi); } // end of QuickS public static void quicks(int[] arr) { quicks(arr, 0, arr.Length - 1); }
Thanks for quick response. Plz help small bit more.
•
•
Join Date: Mar 2007
Posts: 2
Reputation:
Solved Threads: 0
I prefer to remove the tail recursion and have a while loop take care of the case where i < hi as such:
[html]private static void quicks(int [] arr, int lo, int hi)
{
int i;
do
{
i = lo;
int j = hi;
int pivot = arr[(lo + hi) / 2];
do
{
while (arr[i] < pivot)
{
i++;
}
while (arr[j] > pivot)
{
j--;
}
if (i <= j)
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
} while (i <= j);
if (lo < j)
{
quicks(arr, lo, j);
}
lo = i;
} while (i < hi);
}[/html]
now, unless you have a massively huge array (say, 2^20 or thereabouts), you shouldn't have any recursive stack overflow issues.
[html]private static void quicks(int [] arr, int lo, int hi)
{
int i;
do
{
i = lo;
int j = hi;
int pivot = arr[(lo + hi) / 2];
do
{
while (arr[i] < pivot)
{
i++;
}
while (arr[j] > pivot)
{
j--;
}
if (i <= j)
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
} while (i <= j);
if (lo < j)
{
quicks(arr, lo, j);
}
lo = i;
} while (i < hi);
}[/html]
now, unless you have a massively huge array (say, 2^20 or thereabouts), you shouldn't have any recursive stack overflow issues.
Last edited by jslicer; Mar 27th, 2007 at 1:30 pm. Reason: reformatting
![]() |
Similar Threads
Other Threads in the C# Forum
- Previous Thread: how to give extension to a file??
- Next Thread: Right Click on RichTextBox And Copy/Paste
| Thread Tools | Search this Thread |
.net access algorithm array barchart bitmap box broadcast c# check checkbox client combobox control conversion csharp custom cyclethruopenforms data database datagrid datagridview dataset date/time datetime degrees development draganddrop drawing encryption enum event excel file filename finalyearproject form format forms function gdi+ getoutlookcontactusinfcsvfile gis globalization gtk httpwebrequest image index input install installer java label list listbox mandelbrot math mono mouseclick mysql operator panel path photoshop picturebox pixelinversion post programming radians regex remoting richtextbox save server silverlight sleep socket sql sql-server statistics stream string table text textbox thread time timer timespan update usercontrol users validate validation visualstudio webbrowser windows winforms wpf xml





