`
中国小虫
  • 浏览: 12459 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

排序--------简单排序

    博客分类:
  • C
C 
阅读更多
/*-------冒泡排序----------
    函数名: bubble_sort
	功能  : 实现升序排序
	参数  : 带排序的数组,数组的长度
	返回值 :为空
	描述:时间复杂度为O(n^2),辅助空间为O(1);
	      有一种变形的冒泡排序-- 鸡尾酒排序,
		  它是双向的冒泡排序,时间复杂度也为O(n^2).
	-------------------------*/
void bubble_sort(int *bubble, int Length)
{
	int i,j;
	int  temp;
	int count;
	count = Length;
	for(i = 0; i < Length; i++)
	{
		count--;             //每一次产生最大数后,下面要遍历的数组长度减1;
		for(j = 0; j < count; j++)
		{
			if(bubble[j] < bubble[j+1])
			{
				temp = bubble[j];
				bubble[j] = bubble[j+1];
				bubble[j+1] = temp;
			}
		}
	}
}

/*--------插入排序-----------
    函数名: insert_sort
	功能  : 实现升序排序
	参数  : 带排序的数组,数组的长度
	返回值 :为空
	描述:时间复杂度为O(n^2),辅助空间为O(1);
	-------------------------*/
void insert_sort(int *insertion, int Length)
{
	int i,j;
	int temp;
	for(i = 0; i < Length; i++)
	{
		for(j = i; j >= 1; j--)
		{
			if(insertion[j] > insertion[j-1])
			{
				temp = insertion[j];
				insertion[j] = insertion[j-1];
				insertion[j-1] = temp;
			}
		}
	}
}
/*--------选择排序-----------
    函数名: select_sort
	功能  : 实现升序排序
	参数  : 带排序的数组,数组的长度
	返回值 :为空
	描述:时间复杂度为O(n^2),辅助空间为O(1);
	-------------------------*/
void select_sort(int *selection, int Length)
{
	int i, j;
	int flag=0,temp;//flag标志最小的位置
	int Min;
	for(i = 0; i < Length; i++)
	{
		Min = selection[i];
		for(j = i; j < Length; j++)
		{
			if(Min > selection[j])
			{
				flag = j;
				Min = selection[j];
			}
		}
		temp = selection[i];
		selection[i] = Min;
		selection[flag] = temp;
	}
}

  关于冒泡排序的,后来看到如果在进行length遍之前就已经排序好的话,也就会做白白的循环,所以下面改了程序设置了一个标志,但没有发生交换的时候,证明已经排完序了。

 

void bubble_sort(int *bubble, int Length)  
{  
    int i,j;  
    int  temp;  
    int count, flag = 0;  
    count = Length;
	
    for(i = 0; i < Length; i++)  
    {  
        count--;             //每一次产生最大数后,下面要遍历的数组长度减1;  
        for(j = 0; j < count; j++)  
        {  
            if(bubble[j] > bubble[j+1])  
            { 
				flag = 1;
                temp = bubble[j];  
                bubble[j] = bubble[j+1];  
                bubble[j+1] = temp; 
            } 
			

        }  
		if(flag == 0)
			{
				break;
			}
		else
		{
			flag=0;
		}
    }  
}
分享到:
评论
2 楼 梅陇菜粿 2011-08-11  
加油!
1 楼 中国小虫 2011-08-08  
    

相关推荐

    选择排序-插入排序-快速排序-冒泡排序

    - 选择排序是一种简单直观的排序算法,它的基本思想是在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。...

    经典排序算法源代码-插入排序-选择排序-冒泡排序

    - 插入排序是一种简单直观的排序算法,它的工作原理类似于我们日常整理扑克牌的过程。初始时,数组可以看作是未排序序列,已排序序列为空。每次从未排序序列中取出一个元素,找到它在已排序序列中的合适位置并将其...

    最快的排序算法 谁才是最强的排序算法:快速排序-归并排序-堆排序,排序算法数据结构

    | 简单选择排序 | O(n^2) | O(n^2) | O(n^2) | O(1) | 稳定 | | 直接插入排序 | O(n^2) | O(n) | O(n^2) | O(1) | 稳定 | | 希尔排序 | O(nlogn)~O(n^2) | O(n^1.3) | O(n^2) | O(1) | 不稳定 | | 堆排序 | O(nlogn)...

    简单数据排序--JavaScrip实现

    function InsertSort(arr) { //插入排序-&gt;直接插入法排序 var st = new Date(); var temp, j; for(var i=1; i; i++) { if((arr[i]) (arr[i-1])) { temp = arr[i]; j = i-1; do { arr[j+1] = arr[j]; j--; ...

    js 图片排序 --点点滴滴

    在JavaScript(JS)中,图片排序是一个常见的需求,特别是在网页动态展示或图像处理的应用中。...理解这些基本概念和技巧,将有助于你更好地实现自己的图片排序功能,无论是在简单的网页应用还是复杂的图像处理项目中。

    冒泡排序---选择,插入和快速排序

    冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复进行的,直到没有再需要交换,也就是说该数列已经排序完成。 #### 实现...

    桶排序-解决排序问题

    - 一个简单的桶排序Python实现可能包括以下步骤: 1. 定义桶的数量和区间的范围。 2. 创建空桶数组。 3. 将元素放入对应桶中。 4. 对每个非空桶进行排序。 5. 从桶中按顺序取出元素,构建有序序列。 6. **...

    第七章:外部排序-20211

    在本章“第七章:外部排序-20211”中,主要讲解了如何在磁盘文件或磁带文件等外部存储介质上进行排序。外部排序的主要挑战在于频繁的磁盘I/O操作,因为相比内存,磁盘的存取速度慢得多。 1. **外部排序的基本概念**...

    C语言版的排序方法---插入排序.docx

    插入排序是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序...

    C语言编译之数组排序--选择排序

    选择排序是一种简单直观的比较排序算法,它的工作原理是遍历待排序的数据元素,依次找到最小(或最大)的元素,放到序列的起始位置,直到全部待排序的数据元素排完。 #### 二、程序代码分析 ##### 2.1 主函数 `...

    冒泡排序-14-表单提交.ev4.rar

    在这个"冒泡排序-14-表单提交.ev4.rar"压缩包中,很可能包含了一个关于冒泡排序的示例讲解,可能是一个教学视频"冒泡排序-14-表单提交.ev4.mp4"。 冒泡排序的基本思想是通过重复遍历待排序的数列,一次比较两个元素...

    排序算法实现-支持插值排序+选择排序+冒泡排序-sort.zip

    **选择排序**是一种简单直观的排序算法,它的基本思想是通过n次比较找到未排序序列中的最小(或最大)元素,然后将其放到已排序序列的末尾。这个过程重复n-1次,直到所有元素均排序完毕。选择排序的时间复杂度是O(n...

    算法-理论基础- 排序- 直接选择排序(包含源程序).rar

    提供的压缩包文件“算法-理论基础- 排序- 直接选择排序(包含源程序).pdf”可能包含更详细的解释、示例代码以及可能的性能分析。通过阅读这份文档,你可以深入理解直接选择排序的工作机制,学习如何编写对应的源...

    c语言编写的简单排序--选择排序

    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    八大排序-java实现版

    八大排序java实现版本,直接插入排序、折半插入排序、冒泡排序、简单选择排序、希尔插入排序、快速排序 、堆排序、2-路归并排序 、基数排序,并有时间比较,博文...

    sorttable.js 排序-方便实用的js排序,只需简单操作即可见到效果 Vue

    sorttable.js 排序-方便实用的js排序,只需简单操作即可见到效果 var stIsIE = /*@cc_on!@*/false; sorttable = { init: function() { // quit if this function has already been called if (arguments...

    插入排序-18-右连接查询.ev4.rar

    - 插入排序有多种实现方式,包括简单插入排序、二分插入排序等。简单插入排序在最坏情况下(逆序输入)的时间复杂度为O(n^2),而二分插入排序通过改进可以在插入新元素时使用二分查找,降低平均时间复杂度至O(n log...

    算法-理论基础- 排序- 直接插入排序(包含源程序).rar

    直接插入排序是一种简单直观的排序算法,它是通过构建有序序列,对于未排序数据,在已排序...通过阅读"算法-理论基础- 排序- 直接插入排序(包含源程序).pdf"文件,你可以深入了解其细节并实践代码,提升编程能力。

    数据结构-选择排序-C.ppt

    《数据结构-选择排序-C.ppt》文档详细介绍了选择排序这一内部排序方法,包括它的基本思想、算法描述以及算法分析。选择排序的核心在于通过一系列的比较找到数组中最小(或最大)的元素,并将其放到正确的位置,从而...

    _数据排序实验-----------大学教程---------

    冒泡排序是一种简单的排序方法,通过不断地交换相邻的错误顺序元素来实现排序。它的时间复杂度为O(n²),适用于小规模数据或部分有序的数据。 插入排序的工作原理是将数据分为已排序和未排序两部分,每次将未排序...

Global site tag (gtag.js) - Google Analytics