C double 的排序問題

2021-08-03 22:13:43 字數 1594 閱讀 3848

其實一開始看到double我是很懵圈的,這是個什麼玩意兒。不過我試著一步一步用語言去解釋它的時候,可以這樣理解,用於存放陣列的陣列。

也就是說,在這個陣列中double[0]的乙個元素也是陣列。不過閒話不扯了,那麼回到問題上來,該怎麼排序呢?

假設有如下幾個點(1,4), (5,8), (4,2), (7,9), (10,11).我們現在是需要根據y軸來進行乙個排序。

ok,我們先在程式裡面,把這個東西抽象出來。如下所示。

var points = new double ,

new double,

new double,

new double,

new double

};

其實顯而易見,在這裡我們約定point[0][0]代表點的x座標,point[0][1]代表點的y座標。我們需要看到的結果,是如圖所示的。

但是在這個情況中,如果像針對一維陣列那樣,直接採用各種排序方法不大適用。

ok,那我能不能想到乙個辦法,沒錯,就是投票。

首先取出第乙個點的y座標,然後和其他的幾個點分別和第乙個點比對,如果小於第乙個點的y座標則記一分。

那繼續取出第二個點的y座標,剩餘幾個又分別和它比對,如果小於第二個點,又分別記一分。

直到最後....分數最多的那個,肯定是最小的.....談到這裡,是不是好像兩個for迴圈就在面前飛了。

下面就是**....

public static double sort(double points,int index)

//在這裡排序了,算積分

for (int i = 0; i < points.length ; i++)}}

//根據積分然後來重新構造個結果集

for (int i = 0; i < result.length; i++)

return result;

}

不信邪的可以試試,index是取的1,如上述所說。

但是這裡問題來了,座標點都不一樣,那麼如果遇到一樣的呢?排名會不會出問題。當然,不信的可以自己試試。

在此我就不提會發生什麼問題了。那麼我們再約定嘛,如果遇到點的y座標相同,那麼先出來的那個點算是大的,後面那個點是小的。(當然,怎麼約定看個人心情和想法)

那麼**如下了。

public static double sort(double points,int index)

for (int i = 0; i < points.length ; i++)

else if (points[j][index] == points[i][index] && i < j)}}

}for (int i = 0; i < result.length; i++)

return result;

}

bingo....執行結果,如上圖結果所示.....

這樣我們自己想辦法實現了排序,不過剛才我的朋友給了我乙個方法....

points=points.orderby(a => a[1]).toarray();

好像一句就解決了.....不過自己實現嘛,好歹也是有意義和價值的。綜上,提供了兩種方法。

sql select id in的排序問題

select from test where id in 3,2,4,5,8,6 order by charindex cast id as varchar 3,2,4,5,8,6 這是對select where in類的排序 還有select in的總結 如果用儲存過程實現select in 如i...

CStringArray的排序問題

您可使用本文中示例 要排序 cstringarray 物件。main 函式構造 cstringarray 物件 向其新增元素 列印出元素 呼叫 sort 成員函式以排序,和然後列印排序元素。sort 函式使用氣泡排序演算法來排序陣列並呼叫 compareandswap 函式以比較每個字串並交換這些元...

陣列的排序問題。

程式的版權和版本宣告部分 檔名稱 array.cpp 作 者 董萬鵬 完成日期 2012 年12月2 日 版本號 v1.0 輸入描述 無 問題描述 冒泡法排列陣列 include using namespace std void bubble sort int x,int num void outp...