精华内容
下载资源
问答
  • 至今已经产生了许多比较成熟的排序算法,如交换法、选择法、插入排序法、冒泡法、快速排序法等。交换法虽然执行效率较低而且很少使用,但它对于理解后面将要介绍的选择法很有好处。交换法排序...
    d3fd64425f6aa86b791b097e86277401.png

    计算机领域,排序和查找是两种最基本的操作任务,几乎在所有数据库程序、编程程序和操作系统中都有应用。排序是把一系列数据按升序或降序排列的过程,也就是将一个无序大的数据序列调整为有序序列的过程,它往往占用很多cpu的运行时间。

    至今已经产生了许多比较成熟的排序算法,如交换法、选择法、插入排序法、冒泡法、快速排序法等。交换法虽然执行效率较低而且很少使用,但它对于理解后面将要介绍的选择法很有好处。

    交换法排序借鉴了求最大值、最小值的思想,按升序(或降序)排序的基本过程:

    先将第一个数分别与后面所有的数进行比较,若后面的数小(降序时未大),则交换后面这个数和第一个数的位置,否则不交换;这一轮比较全部结束以后,就求出了一个最小(降序时为最大)的数放在第二个数的位置。然后进入第三轮比较,……直到第n-1轮比较,求出一个最小(降序时为大)的数放在n-1个数的位置,剩下的最后一个数自然就最大(降序时为最小)的数,放在最后。n个数总共需要进行n-1轮比较。按降序排序每轮比较过程如图

    62dedddc528b9bbd14bd706839b1c328.png

    交换法排序示意图

    编写交换法排序的部分程序:

    for(i=0;i

    {

    for(j=i+1;j

    {

    if(score[j]>score[i])//这样的比较表示按降序排序

    {

    temp=score[j];//这里temp起到”空瓶子“的作用,称为中间变量

    score[j]=score[i];

    score[i]=temp;

    }

    }

    }

    展开全文
  • 冒泡排序法c语言

    千次阅读 2019-03-10 15:29:54
    冒泡排序法 排序过程: (1)比较第一个数与第二个数,若为逆序a[0]>a[1],则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止——第一趟冒泡排序,结果最大的数被安置在最后一...

    冒泡排序法

    排序过程:

    (1)比较第一个数与第二个数,若为逆序a[0]>a[1],则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止——第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上;
    (2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置;
    (3)重复上述过程,共经过n-1趟冒泡排序后,排序结束。

    #include <stdio.h>
    
    
    main()
    
    
    {   int a[11],i,j,t;
    
    
        printf("Input 10 numbers:
    
    ");
    
    
        for(i=1;i<11;i++)
    
    
           scanf("%d",&a[i]);
    
    
           printf(" ");
    
    
        for( j = 1 ; j <= 9 ; j++ )
    
    
           for( i = 1 ; i <= 10 - j ; i++ )
    
    
              if( a[i] > a[i + 1] )
    
    
             {t = a[i]; a[i] = a[i + 1]; a[ i + 1] = t;}
    
    
        printf("The sorted numbers:
    
    ");
    
    
        for(i=1;i<11;i++)
    
    
    printf("%d ",a[i]);
    
    
    }
    
    展开全文
  • 问题:C语言一维数组排序,读入一个正整数 n , 再读入 n 个整数(1<n<=10) 样例: 请输入元素个数:5 请输入 5 个整数: 3 2 1 5 4 排序后:1 2 3 4 5 #include<stdio.h> #include<math.h> int...

    问题:C语言一维数组排序,读入一个正整数 n , 再读入 n 个整数(1<n<=10)
    样例

    请输入元素个数:5
    请输入 5 个整数:
    3 2 1 5 4
    排序后:
    1 2 3 4 5

    选择排序:

    #include<stdio.h>
    #include<math.h>
    int main()
    {
       int n,i,j,x,temp;
       printf("请输入元素个数 : ");
       scanf("%d",&n);
       int str[n];
       printf("请输入%d个整数 :\n");
       for(i=0;i<n;i++)//输入
       {
       	    scanf("%d",&x);
       	    str[i]=x;
       } 
       for(i=0;i<n;i++)//遍历数组
       {
       		for(j=i;j<n-1;j++)//将str[i]与其后的数比较
       		{
       			if(str[i]>str[j+1])	
       			{  //始终将较小的数排在左边
       				temp=str[i];
       				str[i]=str[j+1];
       				str[j+1]=temp;
       				//交换数值
    			}
    		}
       }
       printf("排序后 :\n");
       for(i=0;i<n;i++)//输出
       {
       		printf("%d ",str[i]);
       }
       return 0;
    }
    

    冒泡排序(仅第二重循环改变):

    #include<stdio.h>
    #include<math.h>
    int main()
    {
       int n,i,j,x,temp;
       printf("请输入元素个数 : ");
       scanf("%d",&n);
       int str[n];
       printf("请输入%d个整数 :\n");
       for(i=0;i<n;i++)//输入
       {
       	    scanf("%d",&x);
       	    str[i]=x;
       } 
       for(i=0;i<n;i++)//遍历数组
       {
       		for(j=0;j<n-i-1;j++)//将str[i]与其后的数比较
       		{
       			if(str[j]>str[j+1])	
       			{  //始终将较小的数排在左边
       				temp=str[j];
       				str[j]=str[j+1];
       				str[j+1]=temp;
       				//交换数值
    			}
    		}
       }
       printf("排序后 :\n");
       for(i=0;i<n;i++)//输出
       {
       		printf("%d ",str[i]);
       }
       return 0;
    }
    

    PS: 如果有帮到你,希望留个赞,谢谢!

    展开全文
  • C语言交换法排序

    2020-12-27 14:10:33
    2交换法排序(10分) 题目内容: 从键盘输入n个(n≤10)整数,用交换法进行排序(非递减有序),结果输出排序后的序列。说明:交换法排序用函数实现,函数原型为:void sort(int *a,int n); 交换法排序的基本思想是...

    交换法排序
    题目内容:

    从键盘输入n个(n≤10)整数,用交换法进行排序(非递减有序),结果输出排序后的序列。说明:交换法排序用函数实现,函数原型为:void sort(int *a,int n); 交换法排序的基本思想是:n个元素共需要n-1趟,其中第i(从0变化至n-2)趟的任务是找出本趟中最小的元素放在下标为i的位置上,每趟通过从i+1到n-1下标的元素逐个与i下标元素比较及时交换进行排序。

    #include <stdio.h>
    void shuru(int a[], int n)
    {
    	int i;
    	for (i = 0; i < n; i++)
    		scanf("%d", &a[i]);
    }
    
    
    void da(int z[],int n)
    {
    	int x, c, temp, i;
    	for (x = 0; x < n; x++)
    		for (c = 0; c < n - 1; c++)
    		{
    			if (z[c] > z[c + 1])
    			{
    				temp = z[c + 1];
    				z[c + 1] = z[c];
    				z[c] = temp;
    			}
    		}
    	for (i = 0; i < n; i++)
    		printf("%d  ", z[i]);
    	printf("\n");
    }
    int main()
    {
    	int n;
    	int a[10];
    	scanf("%d", &n);
    	shuru(a, n);
    	da(a, n);
    }
    
    展开全文
  • 选择法排序c语言

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

    万次阅读 2017-12-17 16:24:02
    将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们。通过一遍扫描,则最后一个元素必定是最大的元素。然后用同样的方法对前N−1个元素...
  • 希尔排序(元素交换法和数组元素移动) 希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该...
  • C语言排序算法之简单交换排序,直接选择排序,冒泡排序,最近考试要用到,网上也有很多... 3 交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动 4 不稳定 5 */ 6 #i...
  • 快速排序算法C语言程序,快速排序算法和冒泡排序法类似,都是基于交换排序思想,但是快速排序算法对冒泡排序算法进行改进,从而使其具有更高的执行效率。
  • 冒泡排序法(C语言)

    2016-09-08 12:35:07
    冒泡排序法原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子。...
  • 选择法排序是指每次选择索要排序的数组中的最小值(这里是由小到大排序,如果是由大到小排序则需要选择最大值)的数组元素,将这些数组元素的值与前面没有进行排序的数组元素值进行互换 代码实现需要注意的是:声明...
  • 冒泡排序法C语言

    2018-11-24 12:53:00
    常用的排序方法有冒泡排序法,选择排序法,插入排序法以及希尔排序法等。本文着重讲解如何利用C代码,实现冒泡排序。 首先,要了解什么是冒泡排序。冒泡排序是常用的一种排序方法,其基本方法就是逐次比较。即一次...
  • C语言排序法

    2019-12-06 22:17:46
    /*交换排序法 前面的与后面的比较、交换 */ void sort(int a[], int n) { int i, j, temp; for (i = 0; i < n; i++) for (j = i + 1; j < n; j++) if (a[i] < a[j]) { temp = a[i]; a[i] = a[j]; a...
  • 7-9冒泡法排序C语言版)

    万次阅读 多人点赞 2018-10-16 00:17:43
    将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们。通过一遍扫描,则最后一个元素必定是最大的元素。然后用同样的方法对前N−1个元素...
  • 7-27 冒泡法排序 (20 分)将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们。通过一遍扫描,则最后一个元素必定是最大的元素。然后用...
  • 今天用到选择排序法,自己写写错了,想来百度搜代码对比一下 结果一搜发现百度问答里面以及CSDN里面的选择排序五花八门,乱七八糟。说是选择不像选择,说是冒泡不像冒泡,非常容易误导初学者。 所谓选择排序,它的...
  • 3.交换法排序 #include<stdio.h> //头文件 int main(){//主函数 int i, j, n; int a[999]; int iTemp; //输入 printf("请输入需要排序的元素的个数:\n"); scanf("%d", &n); printf("请输入需要...
  • 用冒泡和选择对10个整数排序C语言 数组)

    万次阅读 多人点赞 2018-05-22 00:38:31
    1.区别: 两者最大的区别在于算法... 选择是每趟选出一个最值确定其在结果序列中的位置,确定元素的位置是从前往后,而每趟最多进行一次交换,其余元素的相对位置不变。可进行降序排序或升序排序。2.冒泡:...
  • 思路:对每一个数与其下一个数比较,如果后一个数大于前一个数,则会进行交换,实现排序。 #include<stdio.h> #define N 10 main() { int a[N],i,j,p,t; for(i=0;i<N;i++) scanf("%d",&a[i]); for...
  • 算法思想动画图解选择排序法代码演示测试结果说明 算法思想 比较相邻元素,如果第一个比第二个大,就交换两个元素。 对比每一对相邻的元素不断重复上面操作,从开始第一队到结尾的最后一对。 上面操作会不断找到剩余...
  • 交换:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。 简单选择排序:的基本思想:第1...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 368
精华内容 147
关键字:

交换排序法c语言

c语言 订阅