选择排序
来源:互联网 发布:mac如何修改ppt格式 编辑:程序博客网 时间:2024/05/22 10:33
这次学习一下选择排序。
首先先从待排序序列中选择一个最小的放在第一个位置,然后再从余下的序列中选择一个次小的放在第二个位置。然后重复的选择下去,直到所有元素排完。
假设有一个序列a【5】={2,1,0,6,4}
我们可以假设最小的值就在a【0】处,这样我们就从a【1…4】中一次从左到右的与假设的最小值比较,如果比假设的值小,那么最小值得下标就更改,最值也更改,直到找到最小值,然后与a【0】交换。
开始:
{【2】,1,0,6,4} 此时下标min = 0;最小值minval =A【0】;
接着在a【1…4】中找比minval小的元素
{2,【1】,0,6,4}此时找到min=1,minval=A【1】;
继续在a【2…4】中找比minval小的元素
{2,1,【0】,6,4} 此时找到min=2,minval=A【2】;
最后继续在a【3..4】中查找,没有比minval更小的元素了,此时第一次查找结束
交换a【2】 与A【0】
这时的序列是这样子:
a【5】={【0】,1,2,6,4}
这是自己写的一段测试代码:
#include<stdio.h>void select_sort(int A[],int size);//函数声明int main(){ int a[13]={3,2,4,0,1,9,6,12,5,7,34,22,11};//初始序列 select_sort(a,13);//调用选择排序函数 int j=0; while(j<13)//输出排好序的数组 { printf("%d\n",a[j]); j++; } return 0;}void select_sort(int A[],int size)//选择排序{ int i,j; for(i = 0;i<size-1;i++)//这里直到size-1就可以了,因为前size-1个排好了,最后一个就在正确位置 { int min = i;//假设的初始最小值下标 min=i int minval = A[i];//假设的初始最小值minval为A【i】 for(j = i+1;j<size;j++)//在余下的序列A【i+1...size】中选择最小值 { if(A[j]<minval)//如果A【j】小于minval { min = j;//更改最小值下标 minval=A[j];//更改最小值 } } int temp; temp = A[i]; A[i]=A[min]; A[min]=temp; //交换找到的最小值与初始假设的最小值的位置}}
0 0
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序:
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 腾讯实习生面试
- Chrome 开发工具概述
- 队列的C语言实现
- poj 1458最长公共子序列
- Android高效加载大图、多图解决方案,有效避免程序OOM
- 选择排序
- Eclipse + Maven
- Activity onDestroy() 调用研究
- Step into MongoDB - 01 - 安装与运行
- Angularjs的应用(1)
- LoadRunner中进程运行和线程运行区别
- 几道基本的java和Android面试题
- 作业3.22
- unity5 和UGUI的小Demo贪吃蛇