什么叫选择排序,什么叫选择排序题
什么是选择排序
选择排序,这个是表格里面的内容吧,有选择排序这一行,按照从大到小或者从高到低的排序!
选择排序和冒泡排序有什么区别
选择排序与冒泡排序区别:
1、冒泡排序是左右两个数相比较,而选择排序是用后面的数和每一轮的第一个数相比较;
2、冒泡排序每轮交换的次数比较多,而选择排序每轮只交换一次;
3、冒泡排序是通过数去找位置,选择排序是给定位置去找数;
4、当一个数组遇到相同的数时,冒泡排序相对而言是稳定的,而选择排序便不稳定;
5、在时间效率上,选择排序优于冒泡排序。
选择排序和冒泡排序的概念:
冒泡排序:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后,然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较。
选择排序:第一次从下标为0的开始下标为0的这个数与后面的n到1个进行比较;找出最小或者最大的放在下标为0的这个位置;第二次从下标为1的开始比较;查询剩下的最大或者最小值;放在下标为1的位置;以此类推;直到排序完成。
什么叫选择法排序?
选择排序法
是对
定位比较交换法
的一种改进。在讲选择排序法之前我们先来了解一下定位比较交换法。为了便于理解,设有10个数分别存在数组元素a[0]~a[9]中。定位比较交换法是由大到小依次定位a[0]~a[9]中恰当的值(和武林大会中的比武差不多),a[9]中放的自然是最小的数。如定位a[0],先假定a[0]中当前值是最大数,a[0]与后面的元素一一比较,如果a[4]更大,则将a[0]、a[4]交换,a[0]已更新再与后面的a[5]~a[9]比较,如果a[8]还要大,则将a[0]、a[8]交换,a[0]又是新数,再与a[9]比较。一轮比完以后,a[0]就是最大的数了,本次比武的武状元诞生了,接下来从a[1]开始,因为状元要休息了,再来一轮a[1]就是次大的数,也就是榜眼,然后从a[2]开始,比出探花,真成比武大会了,当比到a[8]以后,排序就完成了
选择排序算法
选择排序算法与冒泡排序有时候很容易搞混,冒泡排序是把一趟比较后的值放到最后,数组的长度从后面开始缩短。选择排序是从开始选择一个值依次与后面的值比较,一直往后移动位置。
关键点:
选择排序是稳定性的排序, 时间复杂度是o(n^2)。
看一个简单的例子:
5, 3, 2, 1 一趟选择排序是如何进行
开始记录 5的位置 index = 0 为小值的位置, i = 0 为当值的位置
第一次比较 : 5, 3 , 2, 1 ; 3比5小, 更新index = 1
第二次比较: 5, 3, 2 , 1; 2 比3小,更新index = 2
第三次比较: 5, 3, 2, 1 ; 1 比 2 小,更新index = 3
已经到达了数组的末尾,i 和 index的值调换。 得到第一趟比较的结果:1,3,2,5
我们看一下代码的实现
运行后输出结果:
[1, 2, 3, 5]
c语言数组排序中的选择法是什么意思啊?
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中 选出 最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。所以这种排序的方法叫选择法排序。
C语言参考实例:
#include?stdio.h
void?main()
{
????int?a[]={1,3,4,2,0}?;
????int?i,j,n=5;
????for(?i=0;in-1;i++?)
for(?j=i+1;jn;j++?)?//每一遍都与当前a[i]比较
if?(?a[i]??a[j]?)?//大的前移
{
int?t=a[i];
a[i]=a[j];
a[j]=t?;
}
for(?i=0;in;i++?)
printf("%d?",?a[i]?);
}