TypeScript icon indicating copy to clipboard operation
TypeScript copied to clipboard

[FEATURE]: Function for checking if array is sorted should check whether the array is sorted in both ascending and descending order.

Open codeme254 opened this issue 1 year ago • 5 comments

Motivation

I have been looking at the code for checking whether an array is sorted and this is the current implementation:

export function isSortedArray(arr: number[]): boolean {
  for (let i = 0; i < arr.length - 1; i++) {
    if (arr[i] >= arr[i + 1]) {
      return false
    }
  }
  return true
}

The code is working fine, but currently, it is only checking whether the passed array is sorted in ascending order, should we want to check whether the array is sorted in descending order then it will not be of much help.

Examples

Currently, the function checks whether an array is sorted, taking a single parameter: the array to evaluate. To enhance its functionality, I propose adding a second parameter that specifies the order to check for sorting. The second parameter should be a string such as:

  • asc to check whether the array is sorted in ascending order.
  • desc to check whether the array is sorted in descending order.

Here are some example:

isSortedArray([1, 2, 3, 5, 9], 'asc') // true
isSortedArray([1, 2, 3, 5, 9], 'desc') // false
isSortedArray([9, 5, 3, 2, 1], 'desc') // true

Possible workarounds

No response

codeme254 avatar Nov 15 '24 17:11 codeme254

I don't think that's a good idea. Rather, the function should just take an optional comparator, e.g. like Array.sort.

appgurueu avatar Nov 16 '24 14:11 appgurueu

So, your idea is that the function should now be called with two parameters, the array to be sorted and and a callback function which will be the comparator?

isSortedArray([3, 2, 1], (a, b) => b - a); // true
isSortedArray([1, 2, 3], (a, b) => b - a); // false

codeme254 avatar Nov 17 '24 16:11 codeme254

So, your idea is that the function should now be called with two parameters, the array to be sorted and and a callback function which will be the comparator?

isSortedArray([3, 2, 1], (a, b) => b - a); // true
isSortedArray([1, 2, 3], (a, b) => b - a); // false

Yes (your example should have a different comparator in the second line btw). But the comparator should default to something sensible (such that it checks whether the array is sorted ascendingly by default, just like Array.sort sorts ascendingly by default).

appgurueu avatar Nov 17 '24 16:11 appgurueu

export function isSortedArray(a:Array) : boolean { if(a.length >= 2) { if(a[0] < a[1]) { return true; } } return false; } hey can u see this code.

RohanGoparaju028 avatar May 29 '25 12:05 RohanGoparaju028

I am running with an assumption that the array is sorted but the function is there to find the sorted array is in ascending or decending order

RohanGoparaju028 avatar May 29 '25 12:05 RohanGoparaju028