黑马程序员技术交流社区

标题: 浅谈对C语言中三种排序算法的理解---选择排序法 [打印本页]

作者: 邹志鹏    时间: 2014-12-5 10:43
标题: 浅谈对C语言中三种排序算法的理解---选择排序法
        就我目前学习到的知识来说,C语言中最常见的三种排序算法分别是选择、插入、冒泡,下面就这三种算法分别理解分析:
        一、选择排序法
        算法分析:每趟选出一个最值和无序序列的第一个数交换,n个数共选n-1趟。第i趟假设i为最值下标,然后将最值和i+1至最后一个数比较,找出最值的下标,若最值下标不为初设值,则将最值元素和下标为i的元素交换。
        算法特点:每趟是选出一个最值确定其在结果序列中的位置,确定元素的位置是从前往后,而每趟最多进行一次交换,其余元素的相对位置不变。可进行降序排序或升序排序。
        算法举例:
         for(i=0;i<n-1;i++)   //外循环控制趟数,n个数选n-1趟

  {

    k=i;             //假设当前趟的第一个数为最值,记在k中

    for(j=i+1;j<n;j++)  //从下一个数到最后一个数之间找最值

      if(a[k]<a[j])     //若其后有比最值更大的

        k=j;         //则将其下标记在k中

    if(k!=i)        //若k不为最初的i值,说明在其后找到比其更大的数

    { //交换最值和当前序列的第一个数

     t=a[k];

    a[k]=a;  

    a=t;  

  }

  }






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2