注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mr.Right

不顾一切的去想,于是我们有了梦想。脚踏实地的去做,于是梦想成了现实。

 
 
 

日志

 
 
关于我

人生一年又一年,只要每年都有所积累,有所成长,都有那么一次自己认为满意的花开时刻就好。即使一时不顺,也要敞开胸怀。生命的荣枯并不是简单的重复,一时的得失不是成败的尺度。花开不是荣耀,而是一个美丽的结束,花谢也不是耻辱,而是一个低调的开始。

网易考拉推荐

阿英讲选择排序 -- C语言实现  

2012-08-06 21:10:58|  分类: 编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
思路:

       首先以一个元素为基准,从一个方向开始扫描,比如从左到右扫描,以A[0]为基准,接下来从A[1]….A[9]中找出最小的元素,将其与A[0]交换。然后将其基准位置右移一位,重复上面的动作,比如,以A[1]为基准,找出A[2]~A[9]中最小的,将其与A[1]交换。一直进行到将基准位置移到数组最后一个元素时排序结束。

 

每一次两两比较都将最小值放到最前。

 

#include <stdio.h>
#include <stdlib.h>
void swap( int *p1, int *p2 );
void select_sort( int *a, int n );

void select_sort( int *a, int n )
{
    int i, j, k, min;

    for ( i = 0;i < n-1;i++ ) // n-1趟
    {
        min = i; // 先假设最小的数的下标min = i,以此为基准往后找看有没有比a[min]更小的数a[j]

        for ( j = i + 1;j < n;j++ ) //从i往前的数据都是从小到大排好的,所以从i开始往下找剩下的元素中最小的
        {
            if ( a[j] < a[min] ) // 如果有比a[min]小的a[j], 则将min修正为j
            {
                min = j;
            }
        }
  if (min != i) // 如果 min = i 说明假设是正确的, 最小的数的下标是i
  {
   swap( &a[i], &a[min] );
  }

  printf( "\n第%d趟数组序列:\n", i ); // 纯粹是测试用的
  for ( k = 0;k < n;k++ )
   {
    printf( "%5d", a[k] );
   }
    }
}

void swap( int *p1, int *p2 )
{
    int temp;
    temp = *p1;
    *p1 = *p2;
    *p2 = temp;
}

int main()
{
    int i;
    int len;

    int array[] = {12, 278, 85, 24, 18, 69, 58, 21, 175, 28, 1};  // 故意将最小的数放在最后,提醒大家第一趟最小的数是冒不到水面上来的
    len = sizeof( array ) / sizeof( *array );
    printf( "排序前数组序列:\n" );

    for ( i = 0;i < len;i++ )
    {
        printf( "%5d", array[i] );
    }

    select_sort( array, len );

 printf( "\n排序后数组序列:\n" );

    for ( i = 0;i < len;i++ )
    {
        printf( "%5d", array[i] );
    }

    getchar();

}

  评论这张
 
阅读(423)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016