1. function quickFixSort(arr, minVal, maxVal) {
  2. // Input validation
  3. if (!Array.isArray(arr)) {
  4. return "Invalid input: Input must be an array.";
  5. }
  6. if (arr.length === 0) {
  7. return arr; // Return empty array if input is empty
  8. }
  9. if (typeof minVal !== 'number' || typeof maxVal !== 'number') {
  10. return "Invalid input: minVal and maxVal must be numbers.";
  11. }
  12. if (minVal > maxVal) {
  13. return "Invalid input: minVal must be less than or equal to maxVal.";
  14. }
  15. // Partitioning function
  16. function partition(arr, low, high) {
  17. const pivot = arr[high];
  18. let i = low - 1;
  19. for (let j = low; j <= high - 1; j++) {
  20. if (arr[j] <= pivot) {
  21. i++;
  22. [arr[i], arr[j]] = [arr[j], arr[i]]; // Swap
  23. }
  24. }
  25. [arr[i + 1], arr[high]] = [arr[high], arr[i + 1]]; // Swap pivot to correct position
  26. return i + 1;
  27. }
  28. // Recursive function to perform quicksort
  29. function quickSort(arr, low, high) {
  30. if (low < high) {
  31. const partitionIndex = partition(arr, low, high);
  32. quickSort(arr, low, partitionIndex - 1); // Sort left partition
  33. quickSort(arr, partitionIndex + 1, high); // Sort right partition
  34. }
  35. }
  36. //Check if all elements are within range
  37. for (let i = 0; i < arr.length; i++) {
  38. if (arr[i] < minVal || arr[i] > maxVal) {
  39. return "Some elements are outside the specified range [minVal, maxVal].";
  40. }
  41. }
  42. // Perform quicksort
  43. quickSort(arr, 0, arr.length - 1);
  44. return arr;
  45. }

Add your comment