我們將編寫一個程序來計算以非遞增順序?qū)?shù)組進行排序所需的旋轉(zhuǎn)次數(shù)。該程序?qū)⑹褂醚h(huán)遍歷數(shù)組并跟蹤迄今為止找到的最大元素。當找到較小的元素時,我們將增加旋轉(zhuǎn)計數(shù)并更新最大元素。最后,旋轉(zhuǎn)計數(shù)將作為程序的結果返回。這個程序?qū)椭覀兏咝У貙?shù)組進行排序,并確定實現(xiàn)非遞增順序所需的旋轉(zhuǎn)次數(shù)。
方法
計算以非遞增順序?qū)?shù)組進行排序所需的旋轉(zhuǎn)的方法如下 –
將數(shù)組拆分為兩部分:已排序部分和未排序部分。
所需的旋轉(zhuǎn)次數(shù)等于已排序部分中的元素數(shù)量。
要找到已排序的部分,請從右向左遍歷數(shù)組并跟蹤最大元素。
當找到較小的元素時,中斷循環(huán)并返回已排序部分的長度。
如果循環(huán)完成,則整個數(shù)組已排序,因此返回 0。
示例
這是一個完整的 JavaScript 示例,用于計算以非遞增順序?qū)?shù)組進行排序所需的旋轉(zhuǎn)次數(shù) –
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));
登錄后復制
說明
函數(shù)countRotations采用數(shù)組作為參數(shù)。
n 被初始化為數(shù)組的長度。
minIndex 和 minValue 分別初始化為 0 和數(shù)組的第一個元素。
for 循環(huán)從第二個元素開始迭代數(shù)組,以查找數(shù)組中最小元素的索引和值。如果找到較小的元素,minIndex 和 minValue 將更新為其索引和值。
最后,該函數(shù)返回minIndex,,這是按非遞增順序?qū)?shù)組進行排序所需的旋轉(zhuǎn)次數(shù)。
在此示例中,數(shù)組為 [15, 18, 2, 3, 6, 12],,最小元素為 2, 位于索引 2.要對數(shù)組進行非升序排序,2必須放在數(shù)組末尾,所以需要的旋轉(zhuǎn)次數(shù)為2 >.
以上就是JavaScript 程序計算以非遞增順序?qū)o定數(shù)組進行排序所需的旋轉(zhuǎn)次數(shù)的詳細內(nèi)容,更多請關注www.92cms.cn其它相關文章!






