递归——简单选择排序
Posted zhai1997
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归——简单选择排序相关的知识,希望对你有一定的参考价值。
1、排序过程:
将待排序列存放在数组a[n]中。
第一次从a[1]开始,查找比a[0]小的元素,如果存在此元素,则将元素的位置信息记录下来,运用此信息判断查找到的元素是否为a[0],如果不是,则将a[0]与此最小元素交换值的大小。
第二次从a[2]开始,查找比a[1]小的元素.......
........
........
进行n-1次后,算法结束。
2、程序设计:
#include<stdio.h> void disp(int a[],int n)//参数为数组和数组中元素的个数 for(int i=0;i<n;i++)// printf("%d\t",a[i]); printf("\n"); void SelectSort(int a[],int n,int i) int j,k,tmp; if(i==n-1) return;//递归出口 else k=i; for(j=i+1;j<n;j++) if(a[j]<a[k])//如果存在比a[k]小的数字 k=j;//将j位置信息记录下来,直到末尾,即k为从(i+1)到末尾的所有数字的最小值的元素位置 if(k!=i) tmp=a[i]; a[i]=a[k]; a[k]=tmp; SelectSort(a,n,i+1); main() int a[]=2,3,5,6,1,2,435,23,9,234; printf("排序前:"); disp(a,10); SelectSort(a,10,0); printf("排序后:"); disp(a,10);
以上是关于递归——简单选择排序的主要内容,如果未能解决你的问题,请参考以下文章