本文目录
打擂法排序和选择法排序是一回事吗
打擂法排序与选择排序不是一回事,但前者是后者的改进,打擂法排序也并不是什么冒泡排序,在一些教科书中称之为树形选择排序(注意不是排序树),也叫锦标赛排序、胜者树。思路类似于打擂台,打胜者进入下一轮,最后一场胜者是冠军,败者是亚军。
选择法排序
选择法排序是一种简单的容易实现的对数据排序的算法,以整形数组元素为例,有数组A(假设其元素均互不相同),要求对其元素排序使之递增有序。
首先以一个元素为基准,从一个方向开始扫描,比如从左至右扫描,以A交换。
C语言选择排序详解
工作原理是每一次从无序组的数据元素中选出最小(或最大)的一个元素,存放在无序组的起始位置,无序组元素减少,有序组元素增加,直到全部待排序的数据元素排完。
以升序为例的图解:
代码:
#include《stdio.h》
void SelectionSort(int *num,int n)
{
int i = 0;
int min = 0;
int j = 0;
int tmp = 0;
for(i = 0;i 《 n-1;i++)
{
min = i;//每次讲min置成无序组起始位置元素下标。
for(j = i;j 《 n;j++)//遍历无序组,找到最小元素。
{
if(num)
{
min = j;
}
}
if(min != i)//如果最小元素不是无序组起始位置元素,则与起始元素交换位置。
{
tmp = num;
num;
num = tmp;
}
}
}
(此处空一行)
int main()
{
int num = {5,4,3,2,9,1};
int i = 0;
SelectionSort(num,6);//这里需要将数列元素个数传入,有心者可用sizeof在函数内求得元素个数。
for(i = 0;i 《 6;i++)
{
printf("%d ",num);
}
return 0;
}
什么叫选择法排序
选择排序法是对定位比较交换法的一种改进。在讲选择排序法之前我们先来了解一下定位比较交换法。为了便于理解,设有10个数分别存在数组元素a以后,排序就完成了
怎么用选择法对10个整数进行排序
选择法排序是一种简单的容易实现的对数据排序的算法。以整形数组元素为例,有数组A(假设其元素均互不相同)。要求对其元素排序使之递增有序。
首先以一个元素为基准,从一个方向开始扫描,比如从左至右扫描,以A为基准。接下来从A交换。
然后将基准位置右移一位,重复上面的动作,比如,以A交换。
一直进行到基准位置移到数组最后一个元素时排序结束(此时基准左边所有元素均递增有序,而基准为最后一个元素,故完成排序)。
main()int array;
//给数组初始化!
int i,j,k,temp;
for(i=0;i《10-1;i++) {
k=i;
for(j=i+1;j《10;j++)
if (array=array;array=temp;" }="" }
c语言 选择法排序
void sa(int array,int n){ int i,j,k,temp; for(i=0;i《10;i++) { k=i; //保存i的值,用k来进行循环排序 for(j=i+1;j《n;j++) //将第i个元素后面的元素与第i个元素进行比较 if(array) //如果第k=i个元素后面的元素小于i号元素,交换两个元素的标号, 这样就将最小元素的标号放到最前面 k=j; //交换标号 temp=array; //循环结束后,交换两个标号下的元素的值 array; array=temp; }} 这个程序实现的是由小到大的排序。第二个循环里面,就是i号元素后面最小的元素对应的标号放到k中,在交换当前元素与k号元素中的值,实现由大到小排序
选择法排序与冒泡法有什么区别
冒泡排序的思想为:每一次排序过程,通过相邻元素的交换,将当前没有排好序中的最大(小)移到数组的最右(左)端。而选择排序的思想也很直观:每一次排序过程,我们获取当前没有排好序中的最大(小)的元素和数组最右(左)端的元素交换,循环这个过程即可实现对整个数组排序。