精华内容
下载资源
问答
  • 本文实例讲述了C语言排序算法之冒泡排序实现方法。分享给大家供大家参考,具体如下: 冒泡排序和改进的冒泡排序 /*------------------------------------------------------------------------------------------- ...
  • 主要为大家详细介绍了C语言排序算法之插入排序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • C语言排序算法.pdf

    2019-12-24 14:55:15
    C语言排序算法
  • 1.2、具体算法 假设有一个n个元素的整型数组a,需要从小到大排序 首先我们拿a[0]和a[1]进行比较,如果a[0]大于a[1],则将a[0]和a[1]交换位置; 紧接着比较a[1]和a[2],如果a[1]大于a[2],则将a[1]和a[2]交换位置,...

    一、冒泡排序

    1.1、冒泡排序的基本原理

    依次比较相邻的两个数,将较大(小)的数和相邻的数交换位置。

    1.2、具体算法

    假设有一个n个元素的整型数组a,需要从小到大排序

    1. 首先我们拿a[0]和a[1]进行比较,如果a[0]大于a[1],则将a[0]和a[1]交换位置; 紧接着比较a[1]和a[2],如果a[1]大于a[2],则将a[1]和a[2]交换位置,依次类推,一轮比较之后可以将最大的值放到数组最后的位置;
      2.接下来对a[0]到a[n-1]执行上述操作,将最大值放到a[n-2]的位置;
    2. 依次类推,直到比较完成;

    1.3、实例

    假设需要对5,3,6,2,65,34进行排序:

    • 第一轮排序:3,5,2,6,34,65
    • 第二轮排序:3,2,5,6,34,65
    • 第三轮排序:2,3,5,6,34,65
    • 第四轮排序:2,3,5,6,34,65
    • 第五轮排序:2,3,5,6,34,65

    1.4、c代码实现

    void BubbleSort(int *array,int len)
    {
    	if(NULL == array)return;
    	
    	int temp;
    	for(int i=0;i<len;i++)
    	{
    		for(int j=0;j<len-i-1;j++)
    		{
    			if(array[j]>array[j+1])
    			{
    				temp = array[j];
    				array[j] = array[j+1];
    				array[j+1] = temp;
    			}
    		}
    	}
    }
    

    二、选择排序

    2.1、选择排序的基本原理

    1. 在需要排序的数组中,找到最小(大)的元素放到排序数组的末尾(首部),该元素及以后的数据不再参与排序;
    2. 在剩余需要排序数组中,找到最小(大)的元素放到排序数组的末尾(首部),该元素及以后的数据不再参与排序;
    3. 以此类推,直到全部数据排序完成;

    2.2、具体算法

    假设有一个n个元素的整型数组a

    1. 首先我们拿a[0]依次和a[1]-a[n]进行比较,然后记录最小元素的下标(假设最小元素所在的下标为x),比较完成后将a[0]和a[x]交换位置;
    2. 然后拿a[1]和a[2]-a[n]依次进行比较,然后记录最小元素的下标(假设最小元素所在的下标为x),比较完成后将a[0]和a[x]交换位置;
    3. 重复上述步骤,直到对比完成;

    2.3、实例:

    假设需要对5,3,6,2,65,34进行排序:

    • 第一次排序:2,3,6,5,65,34
    • 第二次排序:2,3,6,5,65,34
    • 第三次排序:2,3,5,6,65,34
    • 第四次排序:2,3,5,6,65,34
    • 第五次排序:2,3,5,6,34,65

    2.4、c代码实现

    void SelectionSort(int *array,int len)
    {
    	if(NULL == array)return;
    	
    	int temp;
    	int index;
    	for(int i=0;i<len-1;i++)
    	{
    		index = i;
    		for(int j=i+1;j<len;j++)
    		{
    			if(array[j] < array[index])
    			{
    				index = j;
    			}
    		}
    		if(index == i)continue;
    		temp = array[i];
    		array[i] = array[index];
    		array[index] = temp;
    	}
    }
    
    展开全文
  • 在STM8S003单片机上实现数组排序,用3种冒泡排序法对数组进行排序,并通过串口打印排序过程。
  • 本文给大家分享两种常用的C语言排序算法,代码非常简单,感兴趣的朋友可以参考下
  • c语言排序算法(一)

    万次阅读 多人点赞 2018-05-27 12:29:59
    本篇文章用C语言为大家介绍排序算法之一冒泡排序的具体实现。 冒泡排序:它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也...

          排序算法,是算法之中相对基础的,也是各门语言的必学的算法。本篇文章用C语言为大家介绍排序算法之一冒泡排序的具体实现。

           冒泡排序:它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名“冒泡排序”。

    算法原理:(从小到大排序)

               1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。

               2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

               3.针对所有的元素重复以上的步骤,除了最后一个。

    1. 4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较

    本篇文章问大家介绍四种冒泡排序的实现思路:

    方法一:基础排序排序实现,定义双层for循环,在内层循环中进行判断,如果前一个数字大于后一个数字,则交换位置,最后遍历输出即可。

    /*冒泡排序方法一*/
    #include<stdio.h>
    int main(void){
    	int a[8]={3,2,5,8,4,7,6,9};
    	for(int i=0;i<8;i++){
    //因为外层循环每一次找出当前循环的最大值,跑了几次循环就得到几个循环的最大值,所以内层循环从0跑到n-i即可
    		for(int j=0;j<8-i;j++){
    			if(a[j]>a[j+1]){
    				int temp=a[j];
    				a[j]=a[j+1];
    				a[j+1]=temp;
    			}
    		}
    	}
    	for(int i=0;i<8;i++){
    		printf
    		("%5d",a[i]);
    	}
    } 

    方法二:对于那些原本存在规律的排序的数值,例如:3,2,5,6,7,8,9;我们就没必要把每一个数字再像上一个方法一样都跑一遍,所以第二种方法引出变量flag,作为必须跑循环的标志,也就是一旦有交换,我们就对该位置跑循环

    /*冒泡排序方法二*/
    #include<stdio.h>
    int main(void){
    	int a[8]={3,2,5,8,4,7,6,9};
    	int flag=1;//初始化标志,使之起始可以进入循环
    	for(int i=0;i<8&&flag;i++){
    		flag=0;//如果没有发生if交换,下次便可以直接跳过,不用再跑循环
    		for(int j=0;j<8-i;j++){
    			if(a[j]>a[j+1]){
    				int temp=a[j];
    				a[j]=a[j+1];
    				a[j+1]=temp;
    				flag=1;//发生交换,下次遍历必须经过这里
    			}
    		}
    	}
    	for(int i=0;i<8;i++){
    		printf("%5d",a[i]);
    	}
    } 

    方法三:从第二种方法,我们还可以优化,记录最后发生交换的位置,使之在0到最后交换的位置进行遍历,进行二次排序,

    所以引入中间变量pos

    /*冒泡排序方法三:
    每一次交换记录最后一次交换的位置,i为零的时候就停止 
    */
    #include<stdio.h>
    int main(void){
    	int a[8]={3,2,5,8,4,7,6,9};
    	int i=8-1;//初始化i,让第一次循环把所有的数组跑一遍 
    	while(i){
    		int pos=0;
    		for(int j=0;j<i;j++){
    			if(a[j]>a[j+1]){
    				int temp=a[j];
    				a[j]=a[j+1];
    				a[j+1]=temp;
    				pos=j;//记录交换的位置 
    			}
    		}
    		i=pos;//为下一次循环做准备 
    	}
    	for(int j=0;j<8;j++){
    		printf("%5d",a[j]);
    	}
    } 

    方法四:开始另个for循环,使之实现一个正向冒泡和逆向冒泡,改变他们的起点和终点,对其进行while循环限定

    /*冒泡排序方法四:*/ 
    #include<stdio.h>
    int main(void){
    	int a[8]={3,2,5,8,4,7,6,9};
    	int low=0,hight=8;//定义两个高低限定,并初始化
    	//限定循环条件 
    	while(hight>low){
    		//正向冒泡找最大值 
    		for(int i=low;i<hight;i++){
    		if(a[i]>a[i+1]){
    			int temp=a[i];
    			a[i]=a[i+1];
    			a[i+1]=temp;
    		}
    	}
    	low++;
    		//逆向冒泡找最小值 
    	for(int j=hight;j>low;j--){
    		if(a[j]>a[j+1]){
    			int temp=a[j];
    			a[j]=a[j+1];
    			a[j+1]=temp;
    		}
    	}
    	hight--; 
    }
    	for(int i=0;i<8;i++){
    		printf("%5d",a[i]);
    	}	
    	
    } 

    冒泡排序介绍结束,欢迎各位指正!



    展开全文
  • (c语言排序算法)sort.c

    2020-12-24 11:04:29
    排序算法:直接插入、折半插入排序、希尔排序、冒泡、快排、选择排序、堆排序、归并排序算法c语言实现,带有简要的注释(并非详解)
  • C语言排序算法

    热门讨论 2014-10-23 10:33:34
    这里包含了一些面试中会遇到的算法,个人感觉实现比较简单,浅显易懂
  • c语言排序算法的比较

    2011-08-19 10:13:58
    本程序对6种较为常见的排序算法进行实测比较。他们分别是:起泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、堆排序;2. 待排序表元素的关键字为整型。使用正序、逆序和不同程度的打乱获得不同的数据做...
  • 常用C语言排序算法解析.pdf
  • C语言排序算法论文.pdf
  • c语言排序算法

    2013-10-27 16:15:29
    经典c语言排序算法(1)“冒泡法”(2)“选择法”(3)“快速法”(4)“插入法”
  • c语言排序算法,其中包含插入排序,起泡排序,快速排序,选择排序
  • C语言排序算法的分析和总结.pdf
  • C语言排序算法大全排序[收集].pdf
  • 排序算法中的归并排序(Merge Sort)是利用”归并”技术来进行排序。归并是指将若干个已排序的子文件合并成一个有序的文件。 一、实现原理: 1、算法基本思路 设两个有序的子文件(相当于输入堆)放在同一向量中相邻的...
  • C语言排序算法.zip

    2020-04-14 15:52:58
    包括7种排序 直接插入排序、希尔排序、快速排序、简单选择排序、堆排序、归并排序、基数排序C语言实现。
  • 按严蔚敏《数据结构》教材中的数据结构,实现了多种排序算法的程序设计,并进行实际数据输入测试对比。
  • c语言排序算法总结(主要是代码实现)[收集].pdf
  • C语言 排序 算法

    2013-04-17 08:52:53
    c语言算法及内部排序的具体讲解说明及举例
  • C语言 冒泡排序算法 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说...
  • 冒泡排序、插入排序、归并排序、快速排序、希尔排序、选择排序C语言实现源代码。内附注释说明。
  • c语言 排序算法

    2011-11-28 18:54:21
    冒泡、直接插入、希尔、快速和简单选择排序

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 75,011
精华内容 30,004
关键字:

c语言排序算法

c语言 订阅