精华内容
下载资源
问答
  • 数组排序选择法排序
    千次阅读
    2018-12-02 00:55:22

    除了,之前的冒泡法外,又讲了一个新的方法——选择法。

    算法要求:使用选择法排序法对n(这里为10个数)个整数进行升序排序。

    所谓选择无疑是选出一个数然后不停的比较最后选出最大最小的数:上代码QWQ

     #include <stdio.h>
    int main ()
    {
        int a[10],i,j,k,t,n=10;
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
        for(i=0;i<n-1;i++)//外循环控制趟数(n-1)
        {
            k=i;//假设当前第一个数为最值,存在k中
            for(j=i+1;j<n;j++)//内循环从第二个数开始
            {
                if(a[k]>a[j])//如果k的值大于正在比较的值
                    k=j;//存入k中
            }
            if(k!=i)//如果较小的值不是一开存的值,开始互换
            {
                t=a[k];
                a[k]=a[i];
                a[i]=t;
            }
        }
        for(i=0;i<n;i++)//输出
            printf("%d ",a[i]);
        printf("\n");
        return 0;
    }                                                                                                                                                                                                 

    这就是选择法了,与冒泡法比较,效率有所提高(em.....觉得都差不多),仍要进行较多的排序,比较耗时。

    ——热心市民蔡先生 

    更多相关内容
  • C语言:数组排序选择法排序)

    千次阅读 2021-11-08 08:21:28
    选择法排序指每次选择所要排序数组中的最小(最大)的数组元素,将这个数组元素的值与后面没有进行排序数组元素的值互换。 下面以9、6、15、4、2为例,进行选择排序 元素[0] 元素[1] 元素[2] 元素...

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

    下面以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;
     } 

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

    展开全文
  • 易语言数组排序算法集合源码,数组排序算法集合,排序程序,冒泡排序,改冒泡,双向泡排序,双响泡排序,直接插入排序,地精排序,地精排序2,地精排序3,二分排序,选择排序,梳子排序,希尔排序,快速排序
  • 数组排序之冒泡选择法

    千次阅读 多人点赞 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-11-08 19:51:45
    冒泡法排序指的是在排序时,每次比较数组中相邻的两个数组元素的值,将较大的数(从小到大排列)排在较小的数后面。 以数字9、6、15、4、2为例 元素[0] 元素[1] 元素[2] 元素[3] 元素[4] 起始值 ...

    冒泡法排序指的是在排序时,每次比较数组中相邻的两个数组元素的值,将较大的数(从小到大排列)排在较小的数后面。

    以数字9、6、15、 4、2为例

    元素[0]元素[1]元素[2]元素[3]元素[4]
    起始值961542
    第一次694215
    第二次642915
    第三次426915
    第四次246915
    结果246915

    可以发现,每次排序都将最大值放在最后一个位置,总排序轮数=元素个数-1,每轮对比次数=元素个数-排序轮数-1

    代码实现如下

    #include<stdio.h>
    int main()
    {
    	int arr[10];                  /*定义一个数组*/
    	int i,j;                      /*i,j为将要使用的循环控制变量*/
    	int temp;                     /*temp为数值交换时使用的临时变量*/
    	for(i=0;i<=9;i++)             /*输入10个数*/
    	{
    		scanf("%d",&arr[i]);
    	}
    	for(i=1;i<=10-1;i++)          /*i代表排序轮数,总轮数=元素个数-1*/
    	{
    		for(j=0;j<10-i;j++)       /*j代表每轮排序次数,次数=个数-轮数-1,但j初值为0*/
    		{
    			if(arr[j]>arr[j+1])   /*如果前一项比后一项大,则两项的值互换*/
    			{
    				temp=arr[j];
    				arr[j]=arr[j+1];
    				arr[j+1]=temp;
    			}
    		}
    	}
    	for(i=0;i<=9;i++)             /*输出排序后的数组*/
    	{
    		printf("%d ",arr[i]);
    	}
    	return 0;
    } 

    冒泡排序是一种相对稳定的排序方法,适合于有序的待排序列。

    展开全文
  • 用冒泡排序法实现输入数组的排序,正序逆序都可以实现。
  • Js中的数组排序

    千次阅读 2022-04-01 15:46:09
    本文介绍了数组自带的sort方法以及冒泡排序选择排序、快排以及插入排序 1.数组的sort() 默认情况下,sort() 方法将按字母和升序将值作为字符串进行排序。 注意: sort() 方法会改变原始数组。 如果想按照别的顺序...
  • C语言 数组——选择排序法

    千次阅读 2020-04-06 17:18:47
    #include <stdio.h> int main() { int a[10],i,j,t; for(i=0;i<=9;i++){ scanf("%d",&a[i]); } for(i=0;i<=8;i++){ for(j=i+1;j<=9;j++){ if(a[i]>a[j]){ ... ...
  • 易语言挂号-自定义数据数组排序源码,挂号-自定义数据数组排序,初始化数组,冒泡,挂号
  • 分类标签:选择数组排序,冒泡排序,插入排序,冒泡排序分类标签:选择数组排序,冒泡排序,插入排序,冒泡排序分类标签:选择数组排序,冒泡排序,插入排序,冒泡排序分类标签:选择数组排序,冒泡排序,插入排序,...
  • Java数组排序方法详解

    千次阅读 2021-02-27 11:03:41
    数组,本身是有序的元素序列,本文我们就来看看Java数组排序的几个方法。一、冒泡排序举 个 栗 子:5 2 0 4 1 3 一个容量为七的数组排升序(降序同理,最大值变最小就ok)①从这组数中找那个冒泡的(最大的),把它踢到...
  • js中数组排序的五种方式

    万次阅读 多人点赞 2021-05-15 14:35:31
    1.Javascript的sort方法,本方法的原理是冒泡排序,这里默认从小到大排序 <script> var arr = [23,13,34,65,65,45,89,13,1]; var newArr = arr.sort(function(a,b){ return a - b; }); console.log...
  • JavaScript 数组排序【六大方法】

    千次阅读 2021-07-27 13:34:17
    数组排序 sort()方法 冒泡排序 选择排序 插入排序 快速排序 希尔排序 数组排序 排序,就是把一个乱序的数组,通过我们的处理,让他变成一个有序的数组 1. sort()方法 sort() 数组对象排序 其原理是冒泡排序 ...
  • es6数组排序

    千次阅读 2022-03-29 15:11:41
    对象数组按属性排序 一个对象数组,单个对象里某个属性是数字,需要按这个属性的数字大小升序排序。 如下代码是一个对象数组按照age属性排序的方法: var str=[ {name:"a",age:50}, {name:"b",age:20}, {name:"c...
  • python数组排序方法详解(sort, sorted,argsort)

    万次阅读 多人点赞 2021-09-27 10:51:26
    这三个排序方法应对日常工作基本够用 先说一下三者的区别 sort, sorted 是用在 list 数据类型中的排序方法 argsort 是用在 numpy 数据类型中的排序方法( numpy 里也有一个 sort 方法,下面会讲) sort 和 sorted ...
  • 数组排序(交换选择法

    千次阅读 2017-10-22 17:11:05
    交换选择法降序排序交换交换对数组数组进行排序的基本思路 就是先让数组(n个数)中的最左边的一个数(用i=0代表)与其右边的每一个数(从j=i+1开始)依次(j++)进行比较,若遇到比其大的数(score[j]>score...
  • 使用结构体数组排序

    千次阅读 2020-11-05 22:06:48
    案例描述:使用一个学生结构体,将班级中的学生按照成绩来使用冒泡排序法排序输出 [ 分析:步骤 ] 1、创建一个学生结构体 struct Student //学生结构体 { int age; int score; string name; }; 2、创建一个学生...
  • PHP 数组排序-php数组的排序函数

    千次阅读 2021-03-23 16:03:30
    PHP - 数组的排序函数在本节中,我们将学习如下 PHP 数组排序函数:sort() - 以升序对数组排序rsort() - 以降序对数组排序asort() - 根据值,以升序对关联数组进行排序ksort() - 根据键,以升序对关联数组进行排序...
  • java四种数组排序

    千次阅读 2021-02-13 00:46:16
    快速排序法Arrays.sort();用法1.sort(byte[] a)对指定的 byte 型数组按数字升序进行排序。sort(byte[] a, int fromIndex, int toIndex)对指定 byte 型数组的指定范围按数字升序进行排序。sort(char[] a)对指定的 ...
  • c++实现数组排序

    千次阅读 2020-04-01 10:25:09
    话不多说上代码 using namespace std; //插入排序 void crpx(int a[],int n){ for(int i=1;i<n;i++){ int temp=a[i]; int j=i; while(j>0&&temp<a[j-1]){ a[j]=a[j...
  • JAVA入门学习 —数组排序的方法

    千次阅读 2022-04-20 13:26:09
    选择排序(Select Sort)3.插入排序(Insert Sort)4.希尔排序(Shell Sort)5.快速排序(Quick Sort)6.归并排序(Merge Sort)7.堆排序(Heap Sort)8.计数排序 (Count Sort)9.桶排序(Bucket Sort)10.基数排序(Raix Sort) 1....
  • Java二维数组排序

    千次阅读 2022-04-06 21:04:34
    今天在刷 力扣的时候,有道题卡住了,没办法去看题解,发现题解是将其二维数组排序了,我才猛然发现我还不了解二位数组排序的知识。所以来记录一下。 答案中的代码是这样的,假设需要排序的数组intervals: int[]...
  • js数组排序的几种方法

    千次阅读 2019-10-23 10:24:19
    是的大的元素放到后边,元素交换位置,从而一步步的交换元素的位置,使得最大的元素放到数组的末尾,这样内部的循环就进行了一轮,再根据外部的循环依次再把次大一点的元素放到数组的末尾,从而实现数组的逐步排序。...
  • c语言数组选择法排序

    2012-03-07 23:08:30
    使用c语言写的数组选择法排序的程序代码,有详细注释。
  • C语言:数组排序(插入排序)

    千次阅读 2021-11-11 12:42:13
    插入相对较复杂,基本原理是抽出一个数据,在前面数据中寻找相应的位置插入,然后继续下一个数据,直到排序完成 以9、6、15、4、2为例来进行插入法排序 元素[0] 元素[1] 元素[2] 元素[3] 元素[4...
  • C语言中字符串数组排序问题

    万次阅读 多人点赞 2019-05-31 22:30:49
    在用C语言解决字符串排序问题时,遇到...这是用选择排序法对一个整型数组进行从大到小的排序; //选择排序法 #include <stdio.h> #define N 5 int main(){ int a[N]={4,5,2,3,1}; int i,j,k,temp; for(i=0...
  • Java实现数组排序

    千次阅读 2020-12-01 10:31:45
    选择排序法即是先将第一个数据分别与右侧其他数据依次比较,当第一个数据较大时,对调两数据位置,最终第一个位置的数据将是数组元素的最小值;再对第二个数据分别与右侧其他数据依次比较,当第二个数据较大时,对调...
  • 数组排序sort方法

    千次阅读 2019-12-10 11:11:12
    数组排序sort sort里面不加参数,默认是升序排序 let arr = [1, 8, 2, 9]; arr.sort(); console.log(arr); // [1, 2, 8, 9] 如果想要降序排序,可以加参数改变,如下所示: let arr = ['a', 'b', 'd', 'c']; arr....
  • js 二维sort数组排序

    千次阅读 2020-08-17 13:55:17
    冒泡排序: var arr=[1,22,1,23,52,32,12]; function bubble(arr){ var i,j,d; for(i = 0; i < arr.length; i ++){ for(j = 0; j < arr.length; j ++){ if(arr[i] < arr[j]){ d=...
  • JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法、冒泡法、选择排序法、插入排序法。  快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现。  冒泡法是运用遍历数组进行比较,通过不断...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,113,957
精华内容 445,582
关键字:

数组排序选择法排序