`
jocks
  • 浏览: 6710 次
文章分类
社区版块
存档分类
最新评论

数据结构之常见的排序算法2

 
阅读更多
继续快速排序,简单选择排序和堆排序


一,快速排序
  1. 算法思想
a,先从一个数列中取出一个数作为基数
b,分区过程,将比这个数大的放在右边,小于等于这个数的放到左边
c,再对左右区间重复第二步,直到各个区间只剩一个数

2,代码


void QuickSort(int[]s,int l,int r){//l,r是指快排的范围,从s[l]到s[r]
		int i=l;
		int j=r;
		int temp;
		if(l<r){
			temp=s[l];
			while(i!=j){
				while(j>i&&s[j]>temp){//从右向左找小于temp的数
					j--;
				}
				if(i<j){
					s[i]=s[j];
					i++;
				}
				while(i<j&&s[i]<temp){//从左向右找大于temp的数
					i++;
				}
				if(i<j){
					s[j]=s[i];
					j--;
				}
			}
			s[i]=temp;
			QuickSort(s, l, i-1);
			QuickSort(s, i+1, r);
		}
	}

二,简单选择排序

1,算法思想
选择类排序的主要动作是“选择”,简单选择排序采用最简单的选择方式,从头至尾顺序扫描排列,找出最小的一个记录,和第一个记录交换,
接着从剩下的记录中继续这种选择和交换,最终使序列有序。
void SelectSort(int r[],int n){
		int i,j,k;
		int temp;
		for(i=1;i<=n;i++){
			k=i;
			//算法关键处,从无需序列中挑出一个最小的元素
			for(j=i+1;j<=n;j++){
				if(r[k]>r[j]){
					k=j;
				}
				temp=r[i];
				r[i]=r[k];
				r[k]=temp;
			}
		}
	}

三,堆排序
warning:学堆排序之前,应该了解堆的相关知识;)

算法思想还是上杰宝吧...


代码如下咯:
/*调整为最小堆*/
	void Sift(int R[],int low,int high){
		int i=low,j=2*i;//R[j]是R[i]的左孩子节点
		int temp=R[i];
		while(j<=high){
			if(j<high&&R[j]<R[j+1]){
				j++;
			}
			if(temp<R[j]){
				R[i]=R[j];
				i=j;
				j=2*i;
			}else{
				break;
			}
		}
		R[i]=temp;
	}
	/*堆排序函数*/
	void heapSort(int R[],int n){
		int i;
		int temp;
		for(i=n/2;i>=1;--i){
			Sift(R,i,n);
			for(i=n;i>=2;--i){
				/*以下3句换出了根节点中元素将其放入最终位置*/
				temp=R[1];
				R[1]=R[i];
				R[i]=temp;
				Sift(R,1,i-1);//在减少了一个无需序列中进行调整
			}
		}
	}



分享到:
评论

相关推荐

    数据结构8中算法排序,配源码和动画演示.rar

    数据结构是计算机科学中的核心部分,它探讨了如何有效地存储和组织数据,以便进行高效的查询、更新和操作。在这个压缩包文件中,我们...通过学习和实践这些排序算法,你将能够更好地掌握数据结构和算法,提升编程能力。

    数据结构课程设计(内部排序算法比较_C语言)

    ### 数据结构课程设计:内部排序算法比较_C语言 #### 一、课题背景与意义 排序作为数据结构中的重要组成部分,在实际开发中具有广泛的应用场景。理解不同排序算法的特点及其适用场景,对于提高程序效率和解决问题...

    C语言数据结构内部排序算法及比较

    本文将深入探讨“C语言数据结构内部排序算法及比较”这一主题,结合个人课程作业的经验,对一些核心概念进行阐述,并对常见的内部排序算法进行比较。 首先,数据结构是组织和管理数据的方式,它包括数组、链表、树...

    数据结构经典排序算法之比较

    ### 数据结构经典排序算法之比较 #### 排序的基本概念及其重要性 排序算法作为计算机科学中的基础且关键的一部分,在日常的数据处理工作中扮演着至关重要的角色。通过将数据按照一定的规则进行排列,不仅可以提高...

    广东工业大学_数据结构(内部排序算法)实验报告

    广东工业大学的数据结构实验报告重点关注了几种常见的内部排序算法,包括直接插入排序、选择排序和快速排序。这些算法在不同的场景下具有不同的性能特征。 **直接插入排序**是一种简单直观的排序方法,适用于小规模...

    数据结构 各种排序算法

    数据结构中的排序算法是计算机科学中的重要概念,用于组织和管理数据,提高数据访问和处理的效率。在C++编程中,实现各种排序算法能够帮助理解它们的工作原理,并且可以对比不同算法在不同情况下的性能。以下是几种...

    数据结构各种查找排序算法的实现

    查找和排序算法是数据结构中的重要组成部分,它们在实际编程中有着广泛的应用。本资料包涵盖了数据结构的各种查找排序算法的实现,以及相关的习题、试卷和答案,非常适合学习者深入理解和实践。 首先,让我们来看看...

    数据结构与算法之排序

    在IT领域,数据结构与算法是基础且至关重要的部分,特别是排序算法,它们在软件开发中扮演着核心角色。本文将深入探讨“数据结构与算法之排序”,重点关注内部排序和外部排序。 首先,我们理解一下数据结构。数据...

    数据结构排序算法设计与比较实验报告

    这篇实验报告的主题是“数据结构排序算法设计与比较”,主要涉及了三种常见的排序算法:直接插入排序、冒泡排序和快速排序。实验的目标是通过编程实现这些排序算法,并对算法的性能进行分析。 1. 直接插入排序: ...

    算法与数据结构的排序算法

    时间复杂度是衡量排序算法效率的重要指标,常见排序算法的时间复杂度如下: - 冒泡排序、插入排序、选择排序:平均和最坏情况下的时间复杂度为O(n^2)。 - 快速排序:平均时间复杂度为O(n log n),但最坏情况下为O(n^...

    8个常见数据结构排序算法总结

    文档格式是chm文档,方便查看,点击即可快速浏览排序算法,里面的程序可以直接拿来用,实现语言是标准的C程序。

    算法ppt 数据结构、排序等

    数据结构与排序是计算机科学中的核心概念,它们在编程和算法设计中扮演着至关重要的角色。数据结构是指在计算机中组织和...通过学习这些材料,你将能更好地理解数据结构与排序算法,提升自己的编程技能和问题解决能力。

    数据结构中各种排序算法的比较与分析.pdf

    以下是对数据结构中常见的排序算法的比较与分析的知识点的详细阐述: 1. 排序算法概述:排序算法是计算机科学中处理数据集的算法之一,其目的是将一系列数据元素按照一定的顺序重新排列,常见的顺序有升序和降序。...

    数据结构排序算法演示系统

    《数据结构排序算法演示系统详解》 在计算机科学领域,数据结构与排序算法是至关重要的基础知识,它们直接影响到程序的效率和性能。本文将详细解析“数据结构排序算法演示系统”,探讨其中蕴含的多种排序算法及其原...

    数据结构中几种常见的排序算法之比较

    数据结构中几种常见的排序算法之比较,比较常见的冒泡排序、快速排序等

    数据结构中的所有排序算法加报告

    在IT领域,排序算法是计算机科学中至关重要的一个部分,特别是在数据结构与算法设计中。本文将详尽探讨数据结构中的各种排序算法及其原理、性能分析,并附带一份详细的报告,帮助读者深入理解这些核心概念。 一、...

    数据结构课程设计(C++代码+报告)--各种排序算法时间性能的比较

    2. **冒泡排序**:冒泡排序是最简单的排序算法之一,通过重复遍历数组并比较相邻元素,如果顺序错误就交换它们,直到数组完全排序。冒泡排序的时间复杂度在最好情况(已排序)下为O(n),最坏和平均情况均为O(n^2)。 ...

    常见排序算法 数据结构 C语言实现

    本资源“常见排序算法 数据结构 C语言实现”提供了一系列经典的排序算法的C语言实现,这些算法经过了VC 6.0编译器的验证,确保了其功能性和可靠性。以下是关于这些排序算法的详细解释: 1. **直接选择排序**:选择...

    数据结构课程设计(内部排序算法比较).

    内部排序算法是计算机科学基础课程——数据结构与算法中的核心内容之一。通过学习不同的内部排序算法,可以深刻理解算法的设计思想及其实现方法,同时也能为解决实际问题提供多种选择方案。 ### 常见的内部排序算法...

Global site tag (gtag.js) - Google Analytics