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