|
復制代碼 代碼如下:
static void Reverse(int[] array, int begin, int end)
{
...
}
Reverse方法的作用是將array數組中,從begin下標到end下標之間的元素反序一下,如一個數組初始值是[1, 2, 3, 4, 5, 6],begin為1,end為4,那么當調用了Reverse之后,array數組中的元素便依次成為[1, 5, 4, 3, 2, 6],其中從array[1]到array[4]之前的元素被反序了。此外補充一點……其實本不用補充:這個方法需要對傳入參數的正確性進行校驗,如果用戶調用該方法時傳入了非法的參數,那么則需要拋出異常,并寫清原因。您可以使用您喜歡的語言來實現:C#,VB,Java,Ruby,Python……但是請不要使用內置庫中已經有的功能。:)
很簡單,不是嗎?只可惜截止到目前,也只有1人給出了正確答案。如果您沒有做過這道題目,那么在查看下面的分析之前,不妨拿張紙拿支筆,寫下您的答案,然后再聽老趙慢慢講來…
主體邏輯
這道題目的主題邏輯其實非常簡單。不就是把數組中的一部分反序嗎?不過從這一點上面來說,代碼的清晰程度也有較大差距。好的做法和普通的做法,從編程難度和理解上都有一定差距。例如:
1、許多朋友的做法是:既然是反轉數組的一部分元素,那么只要找到中間的位置,然后計算出和begin的偏移量,然后……怎么怎么一搞,就完成了――嗯,似乎還需要根據進行begin和end中間的元素個數是奇數還是偶數分別處理。
2、另一些朋友的做法是:開一個新數組(長度為end - begin + 1),將begin到end之間的元素放到新數組中去,然后反序,然后再復制回來。
3、還有一個朋友認為用棧:把begin到end之間的元素給push到棧中,再一個一個pop出來依次賦值給begin到end,這樣就反序了……唔!數據結構學的不錯!
只可惜,這樣的做法都復雜了一些。3種做法的時間復雜度均為O(end 主站蜘蛛池模板: 永久免费观看视频 | jk制服啪啪网站 | 成人动漫百度影音 | sihu国产精品永久免费 | 国产欧美一区二区精品性色tv | 欧美激情性AAAAA片欧美 | 亚洲熟女丰满多毛XXXXX | 欧美一区二区激情视频 | 精品水蜜桃久久久久久久 | 亚洲AV久久无码精品蜜桃 | 免费看欧美一级特黄a大片 免费看欧美xxx片 | 欧美激情视频一区二区 | 久久综合网久久综合 | 成人性生交大片免费看中文 | 国产真实乱对白精彩 | 少妇无码吹潮久久精品AV网站 | 尤物久久99国产综合精品 | 99精品中文字幕在线观看 | 亚洲日韩乱码人人爽人人澡人 | 99精彩免费观看 | 国产成人精品免费青青草原app | 超碰久久国产vs | 国产精品久久毛片A片软件爽爽 | 嫩B人妻精品一区二区三区 内射一区二区精品视频在线观看 | 老外的好大c的我好爽 | 在线欧美 精品 第1页 | 99久久久无码国产精品不卡按摩 | xx顶级欧美熟妞xxhd | 国产午夜精品一区二区 | 绝对诱惑在线试听 | 精品久久久麻豆国产精品 | 亚洲男人天堂2018av | av在线不卡中文网 | 狠狠狠的在啪线香蕉 | 久久这里只精品热在线18 | 2020国产成人精品视频人 | 亚洲一卡二卡三卡四卡2021麻豆 | 中文字幕人妻无码系列第三区 | 最近中文字幕MV免费高清在线 | 日本少妇无码精品12P | 亚洲午夜一区二区电影院 |