汇报战况: 前一段时间,我在此寻求各种算法,这里的高人给了我及时的帮助,现在我呢, 算法算是有眉目了,写点自 己的东西,一是总结,二,是帖出来给需要帮助的人看看!  用C#写的选择算法,至于 思想 策略很简单,
  现在感觉 一个道理 写程序必须做到“了然于胸”,
  在写任何程序之前,一定要在心里了解它的思想,逻辑,怎么实现的,然后再写呢 ! 就是考虑用什么语言实现的事了! 选择算法,顾名思义,关键就是选择一个被比较的数据! 怎么选?是任意的, 那………… 下面我是选第一个视为最小的(为什么选第一个?简单,通用嘛!事实证明简单的东西就是最好的东    西!!),用两个for循环,外层控制循环次数,内部循环扫描数据用来找比第一个更小的数,找到了记下它的下标(叫索引也行)就交换。下面代码经过测试是可以运行的!using System;
public class SelectionSort
{
private int i;
private int j;
private int min;
private int temp; public void  Sort(int[] List)
{
for(i=0; i<=List.Length-1;i++)
{
min=i;
for(j=i+1;j<List.Length; j++)
{
if (List[j]<List[min])
min=j;
}
temp=List[min];
List[min]=List[i];
List[i]=temp; }
}
public class MainClass
{
public static void  Main()

int[] iArrary=new int[]{1,5,3,6,10,55,9,2,87,12,34,75,33,47}; 
SelectionSort  Sort = new SelectionSort();
Sort.Sort(iArrary);
for(int m=0; m<iArrary.Length ;m++)
Console.Write(iArrary[m]+ " ");

}  
}
}

解决方案 »

  1.   

    恩,支持一下,我那个时候看着《java算法大全》写C#的算法,写了一些,没有时间了
      

  2.   

      
    using System;namespace sort
    {
    /// <summary>
    /// sort の概要の説明です。
    /// </summary>
    public class sort
    {
     public   int low;
     public   int high;
     public   int[] A; public void  QuickSort(int[] A, int low , int high)
    {
    if(low<high)
    {
    int pivotpos=Partition(A ,low , high) ;      QuickSort(A, low , pivotpos-1);
     QuickSort(A,  pivotpos+1 ,high);
    }
    }
    public int Partition(int[] A,int low ,int high) {
    int i=low ;
    int j=high;  int pivot =A[i];                                 // 用区?的第 1 个??作?基准 ' 
    while(i!=j)
    {
    while (i<j&&A[j]>=pivot)                       //pivot 相当于在位置 i 上 
    j--;                                          // 从右向左?描,?找第 1 个??字小于 pivot.key 的?? low[j] 
    if(i<j)                                          // 如果找到一个小于pivot的数;
    A[i++]=A[j];                          //low[i]和low[j]交?后,i指?加1;
    while(i<j&&A[i]<=pivot)                       //pivot 相当于在位置 j 上
    i++;                                        // 从左向右?描,?找第 1 个??字大于 pivot 的??low[i] 
    if(i<j)                                         // 如果找到一个大于pivot的数;
    A[j--]=A[i];                         // 相当于交? low[i] 和 low[j] ,交?后 j 指?? 1
    }
    A[i]=pivot;                                    // 基准??已被最后定位
    return i ;
    }


    public class MainClass {

    public static void  Main() {
    int[] A = new int[]{9,8,7,3,35,5,3,21,1,57,2,123,4,0}; sort S = new sort();
    S.QuickSort(A ,0,13);

    for(int m=0; m<14;m++)
    Console.Write(A[m]+ "  ");
    }

    } }
    }