1. 程式人生 > >C#中陣列的排序

C#中陣列的排序

Array 類是一個抽象類,是所有陣列的基類。用方括號表示陣列會建立一個派生自 Array 類的新類,這個類可以使用 Array 類定義的方法和屬性。

下面說一下陣列的排序。 Array 有一個靜態方法給陣列元素排序,該種元素型別必須實現 Icompare 介面。而簡單型別(如 int,string 型別,他們已經實現了該介面,可以直接使用 sort 方法進行排序)。

下面給出示例:

public class TestSort
{
	int [] myArray = {4,3,1,2,456,12,23,34};	
	public void Test()
	{
		// 呼叫 sort 方法對陣列元素進行排序(預設排序是從小到大)
		Array.Sort(myArray); // 結果:1,2,3,4,12,23,34,456
		// 從大到小排序,使用 Reverse 方法反轉陣列
		Array.Reverse(myArray);	// 結果:456,34,23,12,4,3,2,1
	}	
}
如果是自定義型別,只需要實現泛型介面 Icompare<T> 即可。
public class MyData:IComparable<MyData>
{
	public int first;
	public int second;
	public MyData(int f,int s)
	{
		first = f;
		second = s;
	}
	// 自定義資料比較,按照 first 和 second 的大小進行從小到大排序,first 相同則比較 second
	public int CompareTo(MyData obj)
	{
		int a = first.CompareTo(obj.first);
		if(a == 0)
		{
			return second.CompareTo(obj.second);
		}
		return a;
	}
}
public class TestMyArray
{
	MyData [] myArray = {
		new  MyData(1,2),
		new  MyData(1,3),
		new  MyData(2,2),
		new  MyData(3,2),
		new  MyData(2,2),
	};	
	public void Test()
	{
		// 呼叫 sort 方法對陣列元素進行排序
		Array.Sort(myArray); // 結果:(1,2),(1,3),(2,2),(2,2),(3,2)
		// 從大到小排序,使用 Reverse 方法反轉陣列
		Array.Reverse(myArray);	
	}	
}



相關推薦

C#陣列排序

Array 類是一個抽象類,是所有陣列的基類。用方括號表示陣列會建立一個派生自 Array 類的新類,這個類可以使用 Array 類定義的方法和屬性。 下面說一下陣列的排序。 Array 有一個靜態方法給陣列元素排序,該種元素型別必須實現 Icompare 介面。而簡單型別

C#DataTable排序

替換 nbsp round color left c# back font dataview 一、排序 1.獲取DataTable的默認視圖 2.對視圖設置排序表達式 3.用排序後的視圖導出的新DataTable替換就DataTable(Asc升序可省略,多列排序用"

c陣列的總結

陣列 定義:陣列是有序的並且具有相同型別的資料的集合。 一維陣列 1、一般形式:型別說明符數  陣列名[常量表達式];例如:int a[10];元素為a[0]-a[] 2、常量表達式中不允許包含變數,可以包含常量或符號常量。 3、陣列元素下標可以是任何整型常量、整型變數或任何整型

php陣列排序

  1.根據值排序    忽略鍵名:升序sort()  降序rsort()  使用者自定義usort($arr,$callback)回撥    保留鍵名: 升序asort()  降序arsort()  使用者自

C++陣列和指標之間的關係梳理

C++中陣列和指標是兩個十分常用且關係密切的資料結構,“陣列即指標,指標即陣列”的言論一直層出不窮。從本質上講,陣列和指標是不同的,陣列是具有確定數量的元素,而指標只是一個標量值。但是,在某些情況下陣列和指標又能相互轉換。下面,將從多個角度分析陣列和指標。 1. 陣列和指標互相轉換 陣列

c#氣泡排序演算法描述

int temp = 0; int b = 0; int[] arr = { 23, 44, 66, 76, 98, 11, 3, 99, 7 };# region該段與排序無關Console.WriteLine("排序前的陣列:");foreach (int item in arr){ Co

c#冒泡排序算法描述

冒泡 con reg read 冒泡排序 ray ever reverse 位置 int temp = 0; int b = 0; int[] arr = { 23, 44, 66, 76, 98, 11

Java的輸入和輸出、if...else if...else判斷、Java列印陣列、Java陣列排序、檢視函式方法的原始碼、命令列引數

Java的輸入和輸出: 輸入: import java.util.Scanner Scanner s = new Scanner(System.in); //通過new Scanner(System.in)建立一個Scanner物件,控制檯會一直等待輸入,直到敲回車鍵

c#陣列 list Arraylist

陣列: int [] a = new int[3]; 優點:存放相同型別的資料,陣列在記憶體中是連續儲存的,所以它的索引速度是非 常的快,而且賦值與修改元素也很簡單。 缺點:在陣列的兩個資料間插入資料很麻煩,還有我們在宣告陣列的時候,必須同時指明陣列的長度,陣列的長度過長,會

重新認識memset函式及c++陣列的初始化賦值

下面就好好重新認識一下這個函式,自己寫了測試的程式碼,memset到底怎麼用呢? 先貼測試程式碼: #include<iostream> #include<cstdio> #include<algorithm> #include<string>

C++陣列和vector的比較

一、陣列C++中陣列是一種內建的資料型別。陣列是存放型別相同的物件的容器,陣列的大小確定不變,不能隨意向陣列中增加元素。1、定義和初始化內建陣列(1)陣列的大小不變,(a[d],d為陣列的維度),陣列的維度必須是一個常量表達式。定義陣列的時,必須指定陣列的型別和大小。(2)初

C++陣列作為形參時,實際傳的是指標

傳陣列時,實際上是建立了臨時的指標變數,指向傳進去的那個陣列。在函式中改變形引數組(臨時指標變數)的指向是可以的,只不過這樣做不會改變原來的陣列 //例子說明陣列做形參時,實際上是用一個臨時指標變數做形參,指向傳進去的陣列首地址。實際的陣列是常指標,不能改變它的值。 #i

C#陣列、ArrayList和List三者的區別

    在C#中陣列,ArrayList,List都能夠儲存一組物件,那麼這三者到底有什麼樣的區別呢。 陣列     陣列在C#中最早出現的。在記憶體中是連續儲存的,所以它的索引速度非常快,而且賦值與修改元素也很簡單。 //陣列 string[] s=new string[

C++陣列的引用—防止陣列退化

在c語言中,陣列作為函式引數時,實際上陣列已經退化為指標使用。  下面這三種用法是等價的: int f1(int apples[]); int f1(int apples[10]); int f1(int* apples); 這樣一來,在f1中是無法知道陣列的大小的,開發者必須提前

C語言陣列排序小結

讓我們先定義一個整型陣列a[n],下面用五種方法對其從小到大排序。 (1)“冒泡法” 冒泡法大家都較熟悉。其原理為從a[0]開始,依次將其和後面的元素比較,若a[0]>a[i],則交換它們,一直比較到a[n]。同理對a[1],a[2],...a[n-1]處理,即完成排序

C++陣列與MATLAB mxArray相互賦值

完成功能下:C++中產生一個256X256大小的陣列A;現在要在這個陣列顯示為一個灰度影象,然後把該數組裡面的每一個值乘2後返回給原陣列:C++程式如下: #include "stdafx.h" #include <windows.h> #include <

C++陣列與STLvector和array的比較

我的Github個人部落格 ----------------------------------- 阮一峰的網路日誌 ----------------------------------- 劉未鵬 | Mind Hacks ---------------------------

c#陣列,ArrayList和List 三者的區別

在c#中,陣列在記憶體中是連續的,索引速度很快,賦值和修改也很簡單。string[] s=new string[2]; //賦值 s[0]="a"; s[1]="b"; //修改 s[1]="a1"; 但是陣列也有一些不足的地方,在資料的兩個資料

C++陣列的引用作為函式引數

#include <iostream> using namespace std; /* void fun(char (&buff)[11])//括號裡必須有11才不報錯 { c

詳談C++陣列作為函式引數

一、一個例子引發的思考   執行以下程式碼,請問輸出是什麼?例子來源於《劍指Offer》,我對書上例子做了修改,讓其可以執行。 #include<iostream> using namespace std; int GetSize(int da