2017年12月13日 星期三

[ VB2010 ] - 選擇排序法

[ VB2010 ] - 選擇排序法


選擇排序(Selection sorting)

類似於氣泡排序法。主要差異在於n回合比較時以一額外資料空間儲存目前第n()若發現資料順序不對就將資料互換。依次由上往下比,則結果將由最大(最小)逐回合比較至最小(最大)
【分析】
1.      比較之回合數=資料數(n)-1
2.        時間複製度:最差與平均時間O(n2)
3.        需要一個額外(元素)空間。
4.        為一穩定排序。
5.        資料量小時,使用效果佳(優於氣泡)
【原理】
1.        未排序前之第一筆資料可視為已排序好之資料
2.        每一回合逐一比較相臨資料,依排序之順序交換位置。
【演算法】
SelSort(int A[], int n)  //選擇排序法之副程式
 {
   int i, j, Temp, NP = 0;
   for (i = 1; i <= n - 1; i++)
    {
       NP = i;
       for (j = i + 1; j <= n; j++)
          if (A[j] > A[NP])  NP = j;
      {//相鄰兩個的資料交換位置
       Temp = A[i];
       A[i] = A[NP];
       A[NP] = Temp;
      }
    }
 }




Public Class Form1

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        End
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim SortResult As String = ""
        Dim Data(7) As Integer
        Dim I, J, K As Integer, Buffer As Integer
        Dim MinIdx As Integer = 0

        Data(0) = Val(TextBox1.Text)
        Data(1) = Val(TextBox2.Text)
        Data(2) = Val(TextBox3.Text)
        Data(3) = Val(TextBox4.Text)
        Data(4) = Val(TextBox5.Text)
        Data(5) = Val(TextBox6.Text)
        Data(6) = Val(TextBox7.Text)
        Data(7) = Val(TextBox8.Text)


        For I = 0 To UBound(Data) - 1

            For K = 0 To UBound(Data)
                TextBox9.Text &= (I + 1).ToString & ". Data" & (K + 1).ToString & "=" & CStr(Data(K)) & "__"
            Next

            MinIdx = I
            For J = I To UBound(Data)
                If Data(J) < Data(MinIdx) Then
                    MinIdx = J
                End If
            Next
            Buffer = Data(I)
            Data(I) = Data(MinIdx)
            Data(MinIdx) = Buffer

            TextBox9.Text &= vbCrLf
        Next


        For I = 0 To UBound(Data)
            SortResult &= CStr(Data(I)) & ","
        Next

        TextBox9.Text &= vbCrLf & "最後排序結果" & vbCrLf & (SortResult)


    End Sub

End Class

沒有留言:

張貼留言

2024年4月24日 星期三 Node-Red Dashboard UI Template + AngularJS 參考 AngularJS教學 --2

 2024年4月24日 星期三 Node-Red Dashboard UI Template + AngularJS 參考 AngularJS教學 --2 AngularJS 實例 <!DOCTYPE html> <html> <head> &...