יול.16

QuickSort

QuickSort

  1. public static int[] QuickSort(int[] array) {
  2. QuickSort(array, 0, array.Length - 1);
  3. return array;
  4. }
  5. public static void QuickSort(int[] array, int startIdx, int endIdx) {
  6. if(startIdx >= endIdx)
  7. return;
  8. int pivotIdx = startIdx;
  9. int leftIdx = startIdx + 1;
  10. int rightIdx = endIdx;
  11. while (rightIdx >= leftIdx) {
  12. if(array[leftIdx] > array[pivotIdx] && array[rightIdx] < array[pivotIdx])
  13. swap(leftIdx, rightIdx, array);
  14. if(array[leftIdx] <= array[pivotIdx])
  15. leftIdx +=1;
  16. if(array[rightIdx] >= array[pivotIdx])
  17. rightIdx -=1;
  18. }
  19. swap(pivotIdx, rightIdx, array);
  20. bool leftSubarrayIsSmaller = rightIdx - 1 - startIdx < endIdx - (rightIdx + 1);
  21. if(leftSubarrayIsSmaller) {
  22. QuickSort(array, startIdx, rightIdx - 1);
  23. QuickSort(array, rightIdx + 1, endIdx);
  24. } else {
  25. QuickSort(array, rightIdx + 1, endIdx);
  26. QuickSort(array, startIdx, rightIdx - 1);
  27. }
  28. }
  29. private static void swap(int i, int j, int[] array) {
  30. int temp = array[j];
  31. array[j] = array[i];
  32. array[i] = temp;
  33. }


תגיות:
שתף את הסיפור הזה:

תגובות(0)

השאירו תגובה

קפטצ'ה לא מתאימה

תגובה