黑马程序员技术交流社区
标题: 浅谈对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 |