給定乙個整數陣列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型別的,如果屬性...