你直接傳一個數(shù)組進去,而且是一個結(jié)構(gòu)體數(shù)組,array.sort怎么知道根據(jù)結(jié)構(gòu)中的哪一個屬性進行排序?放一個c#的代碼你看看,VB和C#很相似的

專注于為中小企業(yè)提供成都網(wǎng)站制作、網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)臨渭區(qū)免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
class Program
{
static void Main(string[] args)
{
People[] p = new People[3]
{
new People{name="張三"},
new People{name="李四"},
new People{name="張二名"}
};
//重點傳一個實現(xiàn)了IComparer接口的類進去,告訴Array.Sort怎么排序
Array.Sort(p, new PeopleCompare());
foreach (var item in p)
{
Console.WriteLine(item.name);
}
Console.ReadKey();
}
}
//People結(jié)構(gòu)體,換成類一樣的
public struct People
{
public string name { get; set; }
}
//實現(xiàn)了IComparer接口的類
public class PeopleCompare : IComparer
{
public int Compare(object x, object y)
{
People p1 = (People)x ;
People p2 = (People)y;
return p1.name.CompareTo(p2.name);
}
}
第一題:
不需要任何控件,代碼如下:
Private Sub Form_Click()
Dim A() As Integer, N As Integer
Dim St As String, I As Integer, J As Integer
Randomize
Do
St = InputBox("數(shù)字的個數(shù)", "輸入", Int(Rnd * 100))
If St = "" Then
MsgBox "請輸入數(shù)字!"
Else
N = Int(Val(St))
If N 1 Then
MsgBox "請輸入大于0的數(shù)字!"
Else
Exit Do
End If
End If
Loop
ReDim A(N)
For I = 1 To N
Do
St = InputBox("第" + Str(I) + "個數(shù)字", "輸入", Int(Rnd * 100))
If St = "" Then
MsgBox "請輸入數(shù)字!"
Else
A(I) = Int(Val(St))
Exit Do
End If
Loop
Next
For I = 1 To N - 1
For J = I + 1 To N
If A(I) A(J) Then
A(0) = A(I)
A(I) = A(J)
A(J) = A(0)
End If
Next
Next
For I = 1 To N
Open App.Path "\" Trim(Str(I)) ".txt" For Output As #1
Print #1, A(I)
Close #1
Next
Print "已經(jīng)把"; N; "個數(shù)寫入到"; App.Path; "\1.txt 到 "; N; ".txt中.請查看."
End Sub
'已經(jīng)運行過.
第二題:
DIM 是變量聲明語句,它的格式為:
dim 變量名[as 格式] [,變量名[as 格式][,變量名[as 格式]......]
其中:
變量名:以字母或漢字開始的字串,代表一個變量
格式有以下幾種:
屬于數(shù)字的有五種:
(1)字節(jié)型:byte可取值0-255
(2)整形:integer可取值-32768至32767
(3)長整形:long(可取值范圍很大的正負整數(shù))
(4)單精度型:single(可取值小數(shù))
(5)雙精度型:double(可取值范圍更大,小數(shù)位數(shù)更多的小數(shù))
字符串型:string(可代表由字母\數(shù)字或漢字組成的字符集合)
布爾型:boolean(取值為ture\false)
日期型:date(可表示形如2009-5-26 02:36這樣的組合)
如果要用姓名\住址\單位名稱...等用字符串型(string)
eg:dim name as string(用name變量表示名字時,聲明成字符串變量)
如果是用數(shù)字需要做計算,如工資\合計\人數(shù)....等要用數(shù)字型,但有一個原則,優(yōu)先選用范圍小的(按照字節(jié)型(byte)\整形(integer)\長整形(long)\單精度型(single)\雙精度型(double)的順序選擇),夠用就可以了,這樣可以占用內(nèi)存少,運算速度快.
eg:dim count as integer(用integer表示員工人數(shù)時,可聲明成整形變量)
eg:dim sum as single(用sum表示工資時,可聲明成單精度型變量)
不知是否說得清楚了.
窗體上添加3個標簽,1個按鈕,在按鈕的單擊事件里寫代碼,如下:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a(,) As Integer = {{5, 6}, {1, 3}, {8, 9}, {72, 1}, {63, 4}}
Dim Temp As Integer
Dim i As Integer
Dim j As Integer
Dim x As Integer
Dim y As Integer
'顯示排序前的數(shù)據(jù)
Label1.Text = "排序前數(shù)據(jù):" vbCrLf
For i = 0 To 4
Label1.Text = Label1.Text a(i, 0) " " a(i, 1) vbCrLf
Next
For i = 0 To 3
For j = i + 1 To 4
If a(i, 0) a(j, 0) Then
Temp = a(i, 0)
a(i, 0) = a(j, 0)
a(j, 0) = Temp
Temp = a(i, 1)
a(i, 1) = a(j, 1)
a(j, 1) = Temp
End If
Next
Next
'顯示排序前的數(shù)據(jù)
Label2.Text = "排序后數(shù)據(jù):" vbCrLf
For i = 0 To 4
Label2.Text = Label2.Text a(i, 0) " " a(i, 1) vbCrLf
Next
'把第3行元素賦予X,Y
x = a(2, 0)
y = a(2, 1)
'輸出X,Y
Label3.Text = "X=" x vbCrLf "Y=" y
End Sub
給你一個最簡單的冒泡排序代碼:
將三個數(shù)放到一個數(shù)組中。
a(0)=val(text1.text):a(1)=val(text2.text):a(2)=val(text3.text)
dim flag as Boolean,temp as Integer
for i = 0 to 2
flag = true
for j = 2 to 1
if a(j)a(j-1) then
temp = a(j-1)
a(j-1) = a(j)
a(j) = temp
flag = false
end if
next j
if flag then Exit For
next i
text4.text=a(0):text5.text=a(1):text6.text=a(2)
Private Sub Command1_Click()
Dim a(1 To 100) As Integer
Dim i As Integer, j As Integer, k As Integer
For i = 1 To 100 '給數(shù)組a一百個元素賦值,并換每行十個數(shù)字輸出來窗體上
a(i) = Int(Rnd * 101)
k = k + 1
Print Tab((k - 1) * 5); a(i);
If k = 10 Then k = 0: Print
Next i
For i = 100 To 2 Step -1 '用冒泡排序法對數(shù)組進行排序
For j = 1 To i - 1
If a(j) a(j + 1) Then
t = a(j): a(j) = a(j + 1): a(j + 1) = t
End If
Next j
Next i
For i = 1 To 100 '輸出排好序的數(shù)組
k = k + 1
Print Tab((k - 1) * 5); a(i);
If k = 10 Then k = 0: Print
Next i
End Sub
試試看:
For?i?=?LBound(moto)?To?UBound(moto)?-?1
For?j?=?LBound(moto)?To?UBound(moto)?-?1?-?i
If?moto(j)??moto(j?+?1)?Then
t?=?moto(j)
moto(j)?=?moto(j?+?1)
moto(j?+?1)?=?t
End?If
Next?j
Next?i
For?i?=?LBound(moto)?To?UBound(moto)
Print?moto(i);
Next?i
當前名稱:vb.net排序代碼,vb排序算法
標題URL:http://chinadenli.net/article31/dsidgsd.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、、網(wǎng)站營銷、商城網(wǎng)站、品牌網(wǎng)站設(shè)計、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)