C#,C选择排序

2012-07-01

选择排序是冒泡排序的改进,但是也是一种不稳定排序算法。每一趟从带排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。

C代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10

int main(void)
{
  int a[N],i,j,tmp,b;
  srand(time(NULL));
  for(i=0;i<N;i++){
    a[i]=rand()%100;
    printf("%3d",a[i]);
   }
  printf("\n");
  for(i=0;i<N-1;i++){
    tmp=i;
   for(j=i+1;j<N;j++){
     if(a[tmp]>a[j])//如果第i个元素大于第i+1个元素,则把i+1这个位置放临时变量tmp
        tmp=j;
      }
      if(i!=tmp){//如果i这个位置不等于这个较小的数的位置
        b=a[tmp];//将这个较小的数赋给临时变量b
        a[tmp]=a[i];//将较大的数赋给较小的这个数
        a[i]=b;//将较小的数的变量里的值赋给第i个数,完成一次选择
       }
   } 
   for(i=0;i<N;i++)
     printf("%3d",a[i]);
   printf("\n");
   return 0;
}

C#代码:

public List<int> Sort(List<int> list) 
        {
            int tmp, b;
            for (int i = 0; i < list.Count - 1;i++ ) 
            {
                //假设tmp的下标值最小
                tmp = i;
                for (int j = i + 1; j < list.Count;j++ )
                {
                    //如果tmp下标值大于j下标值则记录较小的标记为j
                    if (list[tmp] > list[j])
                    {
                        tmp = j;
                    }
                    if(i!=tmp)
                    {
                        //假象最小值和真最小值交换
                        b = list[tmp];
                        list[tmp] = list[i];
                        list[i] = b;
                    }
                }
            }
            return list;
        }
作者:robotbird, 分类:关于代码 标签: 算法 , 浏览(2313), 评论(0)
上一篇: 总是思考人生很没意思
下一篇: 从今天开始坚持不刷技术类文章

相关文章

(0)条评论 订阅

发表评论

电子邮件用于回复通知和avatar全球唯一头像 *

*