陣列題 排序陣列

2021-09-26 09:04:32 字數 961 閱讀 9899

給定乙個整數陣列nums,將該陣列公升序排列。

氣泡排序法:從頭到尾對每乙個數都進行演算法運算,要迴圈(nums.end())次,每次都從開始將相鄰兩個元素對比,大的交換到下面(已經對比過最大的必須要再進行對比)因此總共對比(nums.end()-(已經對比過的數字數量a-nums.begin())-1)次。使用swap(a,b)函式來進行交換處理。

class solution 

};

但是冒泡超出了時間限制。

快速排序法:找開始的數作為基準值,內輪迴圈是先從右往左遍歷找到比基準值小的數,將其與基準值(l所在對應)交換,然後再從左往右遍歷找到比基準數大的數,將其與基準值(當前r所對應位置)交換。外迴圈是將整個陣列以基準值為中心分成左右兩部分。

class solution 

void my_sort(vector& nums,auto left,auto right)

vectormy_sort(vectornums);

if(nums.size()==1) return nums;

auto b=nums.begin(),e=nums.end();

vectorleft = my_sort(vector(b,b+(e-b)/2));

vectorright = my_sort(vector(b+(e-b)/2,e));

auto l=left.begin(),r=right.begin();

vectorans;

for(int i=0;i<(left.size()+right.size());i++)

if (r != right.end()&&(l ==left.end()||*l>=*r))

}return ans;

}};

演算法題 搜尋旋轉排序陣列

假設按照公升序排序的陣列在預先未知的某個點上進行了旋轉。例如,陣列 0,1,2,4,5,6,7 可能變為 4,5,6,7,0,1,2 搜尋乙個給定的目標值,如果陣列中存在這個目標值,則返回它的索引,否則返回 1。你可以假設陣列中不存在重複的元素。你的演算法時間複雜度必須是 o log n 級別。1 ...

刷題60 排序陣列

給定乙個整數陣列 nums,將該陣列公升序排列。示例 1 輸入 5,2,3,1 輸出 1,2,3,5 示例 2 輸入 5,1,1,2,0,0 輸出 0,0,1,1,2,5 1 a.length 10000 50000 a i 50000 演算法穩定性 時間複雜度 空間複雜度 執行用時 記憶體消耗 自...

Js物件陣列排序,陣列排序

陣列物件排序var arr varcompare function obj1,obj2 else if val1 val2 else console.log arr.sort compare 輸出結果為 object object 上面的 優化 這個只能排序age屬性值為number型別的,如果屬性...