自强不息,止于至善

身无半文,心忧天下;手释万卷,神交古人
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

直接选择排序

Posted on 2007-11-02 21:09  L.Zhang  阅读(121)  评论(0)    收藏  举报
namespace SelectSort
{
    
public partial class frmMain : Form
    {
        
struct rectype
        {
            
public int key;
            
public string other;
        }

        
private rectype[] r;
        
private const int n = 10;

        
/// <summary>
        
/// 构造函数
        
/// </summary>
        public frmMain()
        {
            InitializeComponent();

            r 
= new rectype[n];

            Random ran 
= new Random();

            
for (int i = 0; i < n; i++)
            {
                r[i].key 
= ran.Next(100);
                r[i].other 
= "我是" + r[i].key;
                
this.lbUnSort.Items.Add(r[i].other);
            }
        }

        
/// <summary>
        
/// 开始排序
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>
        private void btnSort_Click(object sender, EventArgs e)
        {
            
this.SELECTSORT();

            
for (int i = 0; i < n; i++)
            {
                
this.lbSort.Items.Add(r[i].other);
            }

        }

        
/// <summary>
        
/// 排序算法
        
/// </summary>
        private void SELECTSORT()
        {
            
int i, j, k;
            rectype temp;

            
for (i = 0; i < n - 1; i++)
            {
                k 
= i;
                
for (j = i + 1; j < n; j++)
                {
                    
if (r[j].key < r[k].key)
                    {
                        k 
= j;
                    }
                }

                
if (k != i)
                {
                    temp 
= r[i];
                    r[i] 
= r[k];
                    r[k] 
= temp;
                }
            }
        }
    }
}