精华内容
下载资源
问答
  • 选择法
    千次阅读
    2021-11-08 08:21:28

    选择法排序指每次选择所要排序的数组中的最小(最大)的数组元素,将这个数组元素的值与后面没有进行排序的数组元素的值互换。

    下面以9、6、15、4、2为例,进行选择排序

    元素[0]元素[1]元素[2]元素[3]元素[4]
    起始值961542
    第一次261549
    第二次241569
    第三次246159
    第四次246915
    结果246915

    可以发现,有n个数进行选择法排序时,需要执行n(n-1)/2次比较,n-1次交换

    下面通过程序来实现(10个元素从小到大排序)

    #include<stdio.h>
    int main()
    {
    	int arr[10];            /*定义一个10个元素的数组*/ 
    	int i,j,temp,pos;       /*temp记录最小值,pos记录最小值位置*/
    	for(i=0;i<=9;i++)       /*输入各个数字*/
    	{
    		scanf("%d",&arr[i]);
    	}
    	for(i=0;i<9;i++)         /*10个数排序,则只需执行9次*/
    	{
    		temp=arr[i];         /*记录此时的值为最小值*/
    		pos=i;               /*记录该元素的位置*/
    		for(j=i+1;j<10;j++)  /*与后面的元素逐个比较*/
    		{
    			if(arr[j]<temp)  /*若temp中的数大于下一位,则temp赋值为下一位*/
    			{
    				temp=arr[j];
    				pos=j;
    			}
    		}
    		arr[pos]=arr[i];      /*交换两个元素的值*/
    		arr[i]=temp;
    	}
    	for(i=0;i<=9;i++)         /*输出排序后的数组*/
    	{
    		printf("%d ",arr[i]);
    	}
    	return 0;
     } 

    由此可以得出选择法排序简单容易实现,适用于数量较少的排序

    更多相关内容
  • C语言选择法排序

    千次阅读 2022-04-12 08:22:16
    什么是选择法排序 选择法排序,是从n个数中先找出最大或者最小的数放到数组的最前面或最后面,再在剩余的n-1个数中找出最大或者最小的数放到数组的次前面或倒数第2单元,以此类推,直至排序完毕。通俗的理解,遍历...

    什么是选择法排序
    选择法排序,是从n个数中先找出最大或者最小的数放到数组的最前面或最后面,再在剩余的n-1个数中找出最大或者最小的数放到数组的次前面或倒数第2单元,以此类推,直至排序完毕。通俗的理解,遍历数组就是:把数组中的元素都看一遍。
    具体代码如下:

    #include<stdio.h>
    
    /*****请在下面补充函数 inArray、selectSort 和 outArray 的定义 *****/
    void inArray(int arr[],int n)  //输入数据
    {
        int i;
        for(i=0;i<n;i++)
        scanf("%d",&arr[i]);
    
    }
    void selectSort(int arr[],int n)  //定义选择法排序
    {
        int  i,j,k,t;
        for(i=0;i<n-1;i++)
        {
            k=i;
            for(j=i+1;j<n;j++)
            if(arr[j]<arr[k])  //比较两个数的大小
            k=j;  //把最小元素的序号保存在K中
            if(k!=i)  //如果K值有改变
            {
                t=arr[k];
                arr[k]=arr[i];
                arr[i]=t;
            }  //交换两个数
        }
    }
    void outArray(int arr[],int n)  //输出结果
    {
        for (int i = 0; i < n; i++) {
            printf("%d ", arr[i]);
    }
    }
    

    选择排序法的稳定性
    在选择排序法中,每趟都会选出最大的元素和最小的元素,然后实现两个元素的互换,但是如果在待排序的序列两端出现相等的元素稳定性就很有可能被破环。
    适用场景
    待排序的序列中,元素的个数较少时。
    时间复杂度
    由于存在两层循环,所以选择法排序的时间复杂度为O(n^2)。

    展开全文
  • 数组排序之冒泡法和选择法

    千次阅读 多人点赞 2018-12-16 22:50:33
    这一次,我们来聊聊冒泡排序和简单选择排序。 一.冒泡排序: 1.算法: 1&gt;.基本思想:在排序过程中对元素进行两两比较,越小的元素会经由交换慢慢‘’浮‘’到数组的最前面(低下标处),像气泡一样慢慢浮...

    排序是一维数组中最经典的常见操作。这一次,我们来聊聊冒泡排序法和简单选择排序法。

    一.冒泡排序:
    1.算法:
    1>.基本思想:在排序过程中对元素进行两两比较,越小的元素会经由交换慢慢‘’浮‘’到数组的最前面(低下标处),像气泡一样慢慢浮起。
    2>.本质:
    第1趟冒泡:从数组n-1下标的元素到0下标元素遍历,比较相邻元素对,如果后一个元素小于前一个元素,则交换。第一趟结束时,最小元素‘’浮起‘’到达0下标位置。第二趟冒泡:从数组n-1下标的元素到1下标元素遍历(因为0下标的已经是最小元素,已经到位,无需再参加比较),比较相邻元素对,如果后一个元素小于前一个元素,则交换。第二趟结束时,本趟最小元素到达1下标位置。以此类推,最多n-1趟冒泡,便可完成排序。
    3>.代码实现如下:

    #include<stdio.h>
    #define SIZE 10
    void print(int a[],int n)
    {
    	int i;
    	printf("The array is:\n");
    	for(i=0;i<n;i++)
    		printf("%5d",a[i]);
    	printf("\n");
    }
    void BubbleSort(int a[],int n)
    {
    	int i,j, temp;
    	for(i=0;i<n-1;i++)				//共进行n-1趟排序
    		for(j=n-1;j>i;j--)			//递减循环,从后往前比较
    			if(a[j]<a[j-1])			//两两比较,若后一个元素小则交换该组相邻元素
    			{
    				temp=a[j-1];
    				a[j-1]=a[j];
    				a[j]=temp;
    			}
    }
    int main()
    {
    	int array[SIZE],i=0,n;
    	do								//保证读入的数n满足1<=n<=SIZE
    	{
    		printf("Please input n(1<=n<=%d):",SIZE);
    		scanf("%d",&n);
    	}while(n<1||n>SIZE);
    	printf("Please input %d elements:\n",n);
    	for(i=0;i<n;i++)
    		scanf("%d",&array[i]);		//读入数组元素
    	BubbleSort(array,n);			//调用函数完成排序
    	print(array,n);
    	return 0;
    }
    

    二.选择法排序:
    1.算法:
    1>.本质:不断查找最大(小)元素的过程。
    第一次:n个元素中最小的和第一个元素对换。第二次:n-1个元素中最小的和第二个元素对换。······.第n-1次:最后两个元素比较,小的放到第n-1个元素的位置上
    2>.基本思想:把数组分为左右两个半区,左半区为有序子集,右半区为n-1趟选择。每一趟选择都在无序子集(右半区)中选择出最小元素,并与无序子集首元素交换,然后将该元素并入有序子集。共进行n-1趟排序,每趟最多交换一次。
    3>.数据结构:数组,嵌套循环,记录本次查找最小值下标的变量,交换的中间变量
    4>.代码实现如下:

    #include<stdio.h>
    void Input(int *pa,int n)
    {
    	int i;
    	printf("Plaese input %d elements:\n",n);
    	for(i=0;i<n;i++)					//用for语句控制输入个元素
    		scanf("%d",pa+i);				//还可以用&pa[i]代替pa+i
    }
    void sort(int *pa,int n)
    {
    	int index,i,k,temp;
    	for(k=0;k<n-1;k++)					//k控制排序的趟数,以0到n-2表示所有趟
    	{									
    		index=k;						//本趟最小位置存于index,开始时为K
    		for(i=k+1;i<n;i++)				//通过内层循环找出本趟真正的最小元素
    		{
    			if(pa[i]<pa[index])			//将本趟最小元素的下标赋给index
    				index=i;
    		}
    		if(index!=k)					//如果本趟最小元素没有到位
    		{
    			temp=pa[index];				//则通过交换使本趟最小元素到K下标处
    			pa[index]=pa[k];
    			pa[k]=temp;
    		}
    	}
    }
    void Output(const int *pa,int n)
    {
    	int i;
    	for(i=0;i<n;i++)
    		printf("%5d",*(pa+i));
    	printf("\n");
    }
    int main()
    {
    	int a[10],n;						//定义数组,n控制元素个数
    	do									//保证读入的n满足1<=n<=10
    	{
    		printf("Please input n(1<=n<=10):\n");
    		scanf("%d",&n);					
    	}while(n<1||n>10);
    	Input(a,n);							//调用函数,完成输入
    	printf("The original array is:\n");
    	Output(a,n);						//调用函数,输出原始数组
    	sort(a,n);							//调用函数,完成排序
    	printf("The sorted array is:\n");
    	Output(a,n);						//调用函数,输出排序后的数组
    	return 0;
    }
    
    后续还有更多本人学习心得,欢迎关注。           
    
    展开全文
  • 选择法排序(c语言)

    千次阅读 多人点赞 2021-01-11 11:09:25
    选择法排序:是指先将a[0]~a[n]中的最小元素与a[0]交换;再将a[1]~a[n]中的最小元素与a[1]交换……,每进行一轮比较,找出当前未排序数中的最小元素。比较n-1轮后,排序结束。

    选择法排序:是指先将a[0]至a[n]中的最小元素与a[0]交换;再将a[1]~a[n]中的最小元素与a[1]交换……,每进行一轮比较,找出当前未排序数中的最小元素。比较n-1轮后,排序结束。

    #include <stdio.h> 
    void main()
    {   
    int i, j, p, t, a[10];
        printf("\n input 10 numbers:\n");
        for (i=0;i<10;i++)
            scanf("%d", &a[i]);
        for (i=0;i<10;i++)  //第i轮排序
    	{   p=i; 
            for (j=i+1;j<10;j++)  //找最小元素
    	          if (a[j]<a[p])  p=j; 
            if (i!=p)  { t=a[i];  a[i]=a[p];  a[p]=t; }  //交换
            printf("%8d",a[i]);
        }
    }
    
    展开全文
  • 选择法和冒泡法对10个整数进行排序。10个整数在main函数中用cin输入,自定义两个函数分别实现选择排序和冒泡排序,在main函数中调用两个函数,分别实现正序排序和倒序排序,并分析它们的特点和效率。具体流程如下...
  • 1、选择法排序简介 选择法排序算法是一种常用的排序算法,他的实现方法是遍历数组所有元素,找出最小的元素,将它与第一个元素交换;然后遍历剩下的元素,找出最小的元素并与第二个元素交换;接下来再遍历剩下的...
  • 选择法排序

    万次阅读 2017-12-14 13:13:55
    选择法排序指每次选择所要排序的数组中的最大值(由小到大排序则选择最小值)的数组元素,将这个数组元素的值与最前面没有进行排序的数组元素的值互换。以数字9、6、15、4、2为例,采用选择法实现数字按从小到大进行...
  • 1、选择法排序 选择法排序是指每次选择索要排序的数组中的最小值(这里是由小到大排序,如果是由大到小排序则需要选择最大值)的数组元素,将这些数组元素的值与前面没有进行排序的数组元素值进行互换 代码实现需要...
  • 本题采用选择法进行排序: 选择法思路: 第一次选择:从10个整数中挑出其中最小的整数,拿出来; 第二次选择:从余下的9个整数中挑出其中最小的整数,拿出来,放到上一次挑出的数的后面; 第三次选择:从余下的8...
  • 轮盘赌选择法

    万次阅读 多人点赞 2018-05-01 19:38:30
    转自http://www.cnblogs.com/heaad/archive/2010/12/23/1914725.html以及https://www.cnblogs.com/adelaide/articles/5679475.html轮盘赌选择法又称比例选择方法.其基本思想是:各个个体被选中的概率与其适应度大小...
  • C语言 | 选择法对10个数排序

    万次阅读 多人点赞 2021-01-13 20:28:10
    例60:C语言实现用选择法对10个整数排序。 解析:选择排序思路如下,设有10个元素a[1]a[10],将a[1]与a[2]a[10],若a[1]比a[2]~a[10]都小,则不进行交换,即无任何操作。 若a[2]a[10]中有一个以上比a[1]小,则将其中...
  • 本博文源于《商务统计》旨在讲述,向前选择法的一般步骤及缺点
  • C语言 选择排序 用选择法对10个整数从小到大排序

    万次阅读 多人点赞 2021-02-01 19:11:58
    C语言 选择排序 用选择法对10个整数从小到大排序 题目: 用选择法对10个整数从小到大排序。 输入: 输入10个无序的数字 输出: 排序好的10个整数 代码如下: #include<stdio.h> int main() { int i,j,t...
  • 使用函数的选择法排序

    千次阅读 2020-06-11 16:51:44
    本题要求实现一个用选择法对整数数组进行简单排序的函数。 函数接口定义: void sort( int a[], int n ); 其中a是待排序的数组,n是数组a中元素的个数。该函数用选择法将数组a中的元素按升序排列,结果仍然在数组a...
  • C语言实现选择法排序

    万次阅读 多人点赞 2018-12-23 02:02:04
    选择法排序: 依次使用当前取得的元素和其后面的元素进行比较。 在第一个元素和其后面的元素顺次比较时,可借助中间变量 对两个数进行交换。 void fun(int a[], int n) { int p, temp; for (int i = 0; i &lt; ...
  • 选择法对10个整数进行排序,已解决

    万次阅读 多人点赞 2020-09-22 00:21:16
    //选择法 //也就是第一个数逐次跟每个数比较,之后最小的放在第一位上,以此类推 #include <stdio.h> int main(void) { int a[10]; int i,j,temp; printf("请输入要排序的十个元素:\n"); for(i=0;i<...
  • 7-1 选择法排序

    万次阅读 多人点赞 2020-11-26 16:13:30
    本题要求将给定的n个整数从大到小排序后输出。 输入格式: 输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。 输出格式: 在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末...
  • 选择法对10个整数排序(从小到大)

    万次阅读 多人点赞 2019-01-19 19:00:10
    选择法对10个整数排序(从小到大) 选择排序的思路: 按照升序的排序,设有10个元素,从第一个开始和其余求个进行比较,最小的放在第一个数,再将第二个数和余下8个进行比较,再将最小的放在第二位,一直到排序...
  • 数组——排序(选择法

    千次阅读 2018-12-02 00:55:22
    除了,之前的冒泡法外,又讲了一个新的方法——选择法。 算法要求:使用选择法排序法对n(这里为10个数)个整数进行升序排序。 所谓选择无疑是选出一个数然后不停的比较最后选出最大最小的数:上代码QWQ  #...
  • 使用选择法将数组中的整数按由小到大排序 (10分) 编写选择法排序函数,使用选择法将数组中的整数按由大到小排序。 输入格式: 从键盘上给大小为10个元素的整型数组随意赋值。 输出格式: 在一行中按从大到小顺序输出10...
  • 选择法思路: 取其中的最大值与最后一个数进行交换 假设一共有6个数组,我们用选择法进行从小到大的排序; 6,5,4,2,3,1 第一次: 【6,5,4,2,3,1】-&gt;&gt; 【1,5,4,2,3,6】 第二次:【1,...
  • 使用冒泡法和选择法对10个整数排序——C语言

    千次阅读 多人点赞 2019-07-22 08:04:17
    本文博主分别使用冒泡法和选择法对10个整数排序! 2 解法 2.1 冒泡法 冒泡法就是循环的每一次前一个和后一个相比较,大的就往后移,循环外层结束即可。 // 冒泡法排序 #include <stdio.h> int main(){ int ...
  • 选择法排序是一种简单的容易实现的对数据排序的算法。以整形数组元素为例。 首先以一个元素为基准,从一个方向开始扫描,比如从左至右扫描,以A[0]为基准。接下来从A[0],…,A[9]中找出最小的元素,将其与A[0]交换...
  • C程序---使用函数的选择法排序

    千次阅读 2020-04-17 10:19:28
    思路: 比较相邻元素大小,如果 a[i+1] 小于 a[i] ,则交换这两元素,并且双循环 #include <stdio.h> #include <stdlib.h> #define N 10 void sort(int a[] ,int n); int main() ...n) ...
  • PTA 6-2 使用函数的选择法排序 (25分)

    千次阅读 2021-01-07 23:56:07
    6-2 使用函数的选择法排序 (25分) 本题要求实现一个用选择法对整数数组进行简单排序的函数。 函数接口定义: void sort( int a[], int n ); 其中a是待排序的数组,n是数组a中元素的个数。该函数用选择法将数组a中的...
  • 特征选择之方差选择法VarianceThreshold

    万次阅读 2018-10-13 17:40:22
    #方差选择法 #使用方差选择法,先要计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征。使用feature_selection库的VarianceThreshold类来选择特征的代码如下: from sklearn.feature_selection import ...
  • Roulette Wheel method 轮盘选择法

    千次阅读 2019-08-12 11:21:00
    这两天在看VRP问题的资料,无论在遗传算法还是蚁群算法中,都会提到轮盘选择法。比如在遗传算法对种群进行选择的时候会用到,蚁群算法中每一个蚂蚁按照信息素浓度不同有概率的随机选择路径时也会用到,接下来就介绍...
  • 选择法实现10个整数从大到小排序,采取函数调用方式,从小到大排序只需稍加修改。 1.c语言源代码 #include<stdio.h> int main() { void sort(int x[],int n); //sort函数声明 int i,*p,a[10]; //定义数组...
  • 选择法对10个整数从小到大排序

    万次阅读 2020-05-15 18:11:46
    选择法对10个整数从小到大排序。 输入 输入10个无序的数字 输出 排序好的10个整数 样例输入 4 85 3 234 45 345 345 122 30 12 样例输出 3 4 12 30 45 85 122 234 345 345 #include<stdio.h> int main() { ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 915,005
精华内容 366,002
关键字:

选择法