我們將編寫一個程序來計算以非遞增順序對數組進行排序所需的旋轉次數。該程序將使用循環遍歷數組并跟蹤迄今為止找到的最大元素。當找到較小的元素時,我們將增加旋轉計數并更新最大元素。最后,旋轉計數將作為程序的結果返回。這個程序將幫助我們高效地對數組進行排序,并確定實現非遞增順序所需的旋轉次數。
方法
計算以非遞增順序對數組進行排序所需的旋轉的方法如下 –
將數組拆分為兩部分:已排序部分和未排序部分。
所需的旋轉次數等于已排序部分中的元素數量。
要找到已排序的部分,請從右向左遍歷數組并跟蹤最大元素。
當找到較小的元素時,中斷循環并返回已排序部分的長度。
如果循環完成,則整個數組已排序,因此返回 0。
示例
這是一個完整的 JavaScript 示例,用于計算以非遞增順序對數組進行排序所需的旋轉次數 –
function countRotations(arr) { let n = arr.length; let minIndex = 0; let minValue = arr[0]; // Find the minimum element for (let i = 1; i < n; i++) { if (arr[i] < minValue) { minIndex = i; minValue = arr[i]; } } // Return the number of rotations return minIndex; } let arr = [15, 18, 2, 3, 6, 12]; console.log("The number of rotations required to sort the array in non-increasing order is:", countRotations(arr));
登錄后復制
說明
函數countRotations采用數組作為參數。
n 被初始化為數組的長度。
minIndex 和 minValue 分別初始化為 0 和數組的第一個元素。
for 循環從第二個元素開始迭代數組,以查找數組中最小元素的索引和值。如果找到較小的元素,minIndex 和 minValue 將更新為其索引和值。
最后,該函數返回minIndex,,這是按非遞增順序對數組進行排序所需的旋轉次數。
在此示例中,數組為 [15, 18, 2, 3, 6, 12],,最小元素為 2, 位于索引 2.要對數組進行非升序排序,2必須放在數組末尾,所以需要的旋轉次數為2 >.
以上就是JavaScript 程序計算以非遞增順序對給定數組進行排序所需的旋轉次數的詳細內容,更多請關注www.92cms.cn其它相關文章!