2013-04-03 41 views
0

我基本上想從我的硬盤讀取文本文件,然後使用冒泡排序對文本文件中的字符串元素進行排序(使用IComparable接口)。我知道這可能是一個愚蠢的問題,但我卡在這裏:代碼低於使用冒泡排序和IComparable接口對文本文件排序

using System.IO; 

namespace Pratictice 
{ 
    public partial class CfrmPractice : Form 
    { 
     public CfrmPractice() 
     { 
      InitializeComponent(); 
     } 

     private static T[] BubbleSort<T>(T[] list) where T : IComparable 
     { 
      T temp; 
      bool isSorted = false; 

       while (!isSorted) 
       { 
        isSorted = true; 
        for (int i = 0; i < list.Length - 1; i++) 
        { 
         if (list[i].CompareTo(list[i + 1]) > 0) 
         { 
          temp = list[i]; 
          list[i] = list[i + 1]; 
          list[i + 1] = temp; 
          isSorted = false; 

          return (T) Convert.ChangeType(isSorted[bool],typeof(T)); 
         } 
        } 
       } 
     } 


     private void btnSort_Click(object sender, EventArgs e) 
     { 

     } 

     public void LoadDataSource() 
     { 
      ofdLoadData.InitialDirectory = Application.StartupPath; 
      //ofdLoadData.FileName = "Text FIles (.txt)|*.txt|All Files (*.*)|*.*|"; 

      if (ofdLoadData.ShowDialog() == DialogResult.OK) 
      { 
       try 
       { 
        using (StreamReader f = new StreamReader(ofdLoadData.FileName)) 
        { 
         string sLine; 
         string[] Fields; 

         while (!f.EndOfStream) 
         { 
          sLine = f.ReadLine(); 
          Fields = sLine.Split(' '); 
          lstLoadData.Items.Add(Fields[0]); 
         } 
        } 
       } 
       catch (Exception error) 
       { 
        MessageBox.Show(error.Message, "Practice"); 
       } 

      } 
     } 

     private void LoadData_Click(object sender, EventArgs e) 
     { 

      LoadDataSource(); 
     } 

     private void lstLoadData_SelectedIndexChanged(object sender, EventArgs e) 
     { 

     } 

     class Compare : IComparable 
     { 
      public string FileName; 

      public int CompareTo(object obj) 
      { 
       if (this.FileName == ((Compare)obj).FileName) 
        return 0; 
       else if (this.FileName != ((Compare)obj).FileName) 
        return 1; 
       else 
        return -1; 
      } 
     } 

    } 
} 
+0

爲什麼一般?這是一個文本文件嗎?不是由'string's組成的文本文件嗎? – 2013-04-03 22:32:16

回答

1

嗯,我看到一些funkiness繼續。我不明白爲什麼當您修改傳入方法的列表時需要返回類型。我也不明白你想用Convert.ChangeType實現什麼。這對你有用嗎?

private static void BubbleSort<T>(T[] list) where T : IComparable 
{ 
    T temp; 
    bool isSorted = false; 

    while (!isSorted) 
    { 
     isSorted = true; 
     for (int i = 0; i < list.Length - 1; i++) 
     { 
      if (list[i].CompareTo(list[i + 1]) > 0) 
      { 
       temp = list[i]; 
       list[i] = list[i + 1]; 
       list[i + 1] = temp; 
       isSorted = false; 
      } 
     } 
    } 
}