`

几种排序算法小结

 
阅读更多
//冒泡排序
public class BubbleSort {
	void bubbleSort(int []mp){
		for (int i = 0; i < mp.length; i++) {
			for (int j = 0; j <i; j++) {
				if(mp[j]>mp[j+1]){
					int temp=mp[j];
					mp[j]=mp[j+1];
					mp[j+1]=temp;
				}
				
			}
			
		}
	}

}


//插入排序
//思想:后面一个跟前面所有的进行排序
public class InsertSort {
	void insertSort(int []cr){
		for(int i=0;i<cr.length;i++){
			for(int j=0;j<i;j++)
			{
				if(cr[i]<cr[j]){
					int temp=cr[i];
					cr[i]=cr[j];
					cr[j]=temp;
				}
				            
			}
		}
	
	}

}


//选择排序
public class SelectSort {
	void selectSort(int []xz){
		int k=0;
		for (int i = 0; i < xz.length; i++) {
			int temp=xz[i];
			k=i;
			for (int j = i; j < xz.length; j++) {
				
				if(temp>xz[j]){
					 temp=xz[j];
					 k=j;
				}
			}
			xz[k]=xz[i];
		   	xz[i]=temp;
		   	
		}
	
	}

}


//快速排序
public class QuickSort {
	void quickSort(int qs[]){
		int len=qs.length;
		
		quickSort2(qs, 0,len-1);
	}
	void quickSort2(int qs[],int left,int right){
		int pos;
		if(left<right){
			pos=findPos(qs,left,right);
			quickSort2(qs,left,pos-1);
			quickSort2(qs,pos+1,right);
		}
		
	}
	int findPos(int qs[],int left,int right){
		int val=qs[left];
		while (left<right) {
			while((val<=qs[right])&&(left<right))
				right--;
			qs[left]=qs[right];
			while((val>=qs[left])&&(left<right))
				left++;
			qs[right]=qs[left];
		
		}
		qs[left]=val;
		return left;
	}
	}

//归并排序
		int a[]={1,3,5,7,9,10,13};
		int b[]={2,4,6,8,9};
		int c[]=new int[12];//注意此数组的写法,不能写成int c[]={};
		MergerSort mergerSort=new MergerSort();
		mergerSort.mergerSort(a, a.length, b, b.length, c);
		for (int i = 0; i < c.length; i++) {
			System.out.print(c[i]+" ");
		}

//归并排序的初衷是合并两个有序的数列,让其变成一个有序的数列
public class MergerSort {
	void mergerSort(int a[], int m, int b[], int n, int c[]) {
		int i = 0;
		int j = 0;
		int k = 0;
		while (i < m && j < n) {
			if (a[i] < b[j]) {
				c[k++] = a[i++];
			} else {
				c[k++] = b[j++];
			}
		}
		while (i < m) {
			c[k++] = a[i++];
		}
		while (j < n) {
			c[k++] = b[j++];
		}
	}
}
/*快排,归并排,堆排序时间复杂度相同,但它们三者区别是快速排序和堆排序是不稳定的,
归并为稳定型,对于辅助空间堆排序要求最小,归并最多,它们排序的最好情况复杂度相同,
最坏的情况下快速排序要复杂些,根据数据的数量来说,选择归并或堆,
如果还要求考虑辅助空间,就用堆排序,在涉及稳定性方面则考虑归并(虽然所需空间较多)。
所以,选择那个排序要看题目要求........*/
  • 大小: 101.2 KB
分享到:
评论

相关推荐

    JavaScript中几种常见排序算法小结

    JavaScript中几种常见排序算法小结,学习js的朋友可以参考下,下面对多种方法进行了简单的小结。

    Python数据结构与算法(几种排序)小结

    Python数据结构与算法(几种排序) 数据结构与算法(Python) 冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。...

    C/C++常用算法手册.秦姣华(有详细书签).rar

    2.1.5 数据结构的几种存储方式 18 2.1.6 数据类型 19 2.1.7 常用的数据结构 20 2.1.8 选择合适的数据结构解决实际问题 21 2.2 线性表 21 2.2.1 什么是线性表 21 2.2.2 线性表的基本运算 22 2.3 顺序表结构 ...

    算法引论:一种创造性方法.[美]Udi Manber(带详细书签).pdf

    6.2 二叉搜索的几种形式 6.2.1 纯二叉搜索 6.2.2 循环序列的二叉搜索 6.2.3 二叉搜索特殊下标 6.2.4 二叉搜索长度未知的序列 6.2.5 重叠子序列问题 6.2.6 解方程 6.3 内插搜索 6.4 排序 6.4.1 桶排序和...

    java数据结构与算法第二版

    几种简单排序之间的比较 小结 问题 实验 编程作业 第4章 栈和队列 不同的结构类型 栈 队列 优先级队列 解析算术表达式 小结 问题 实验 编程作业 第5章 链表 链结点(Link) LinkList专题Applet ...

    程序员实用算法——源码

     5.7 小结:选择一种排序算法  5.8 资源和参考资料 第6章 树  6.1 二叉树  6.1.1 树查找  6.1.2 节点插入  6.1.3 节点删除  6.1.4 二叉查找树的性能  6.1.5 AVL树  6.2 红黑树  6.3 伸展树  ...

    Java数据结构和算法中文第二版

    几种简单排序之间的比较 小结 问题 实验 编程作业 第4章 栈和队列 不同的结构类型 栈 队列 优先级队列 解析算术表达式 小结 问题 实验 编程作业 第5章 链表 链结点(Link) LinkList专题Applet ...

    Java数据结构和算法(第二版)

    几种简单排序之间的比较 小结 问题 实验 编程作业 第4章 栈和队列 不同的结构类型 栈 队列 优先级队列 解析算术表达式 小结 问题 实验 编程作业 第5章 链表 链结点(Link) LinkList专题Applet 单链表 查找和删除...

    Java常用算法手册源代码

    2.1.5 数据结构的几种存储方式 2.1.6 数据类型 2.1.7 常用的数据结构 2.1.8 选择合适的数据结构解决实际问题 2.2 线性表 2.2.1 什么是线性表 2.2.2 线性表的基本运算 2.3 顺序表结构 2.3.1 准备数据 2.3.2 初始化...

    Java数据结构和算法中文第二版(1)

    几种简单排序之间的比较 小结 问题 实验 编程作业 第4章 栈和队列 不同的结构类型 栈 队列 优先级队列 解析算术表达式 小结 问题 实验 编程作业 第5章 链表 链结点(Link) LinkList专题Applet...

    Java数据结构和算法中文第二版(2)

    几种简单排序之间的比较 小结 问题 实验 编程作业 第4章 栈和队列 不同的结构类型 栈 队列 优先级队列 解析算术表达式 小结 问题 实验 编程作业 第5章 链表 链结点(Link) LinkList专题Applet...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar )

    10.8 有关指针的数据类型和指针运算的小结 167 10.8.1 有关指针的数据类型的小结 167 10.8.2 指针运算的小结 167 10.8.3 void 指针类型 168 11 结构体与共用体 11.1 定义一个结构的一般形式 170 11.2 结构类型变量的...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar

    10.8 有关指针的数据类型和指针运算的小结 167 10.8.1 有关指针的数据类型的小结 167 10.8.2 指针运算的小结 167 10.8.3 void 指针类型 168 11 结构体与共用体 11.1 定义一个结构的一般形式 170 11.2 结构类型变量的...

    Java语言的科学与艺术 斯坦福大学经典教材

    11.10 复习题 11.11 编程练习 第12章 搜索与排序 12.1 搜索 12.2 排序 12.3 评估算法效率 12.4 使用数据文件 12.5 小结 12.6 复习题 12.7 编程练习 第13章 数组与ArrayList类 13.1 ArrayList类回顾 13.2 HashMap类 ...

    Java语言的科学与艺术(国外计算机科学经典教材)

     1.8 小结  1.9 复习题 第2章 编程示例  2.1 “Hello world”程序  2.2 编程过程的观点  2.3 两数相加的程序  2.4 编程习语和模式  2.5 类和对象  2.6 图形程序  2.7 小结  2.8 复习题  2.9 编程练习 第3...

    二叉排序树与平衡二叉树的实现

    平衡二叉排序树的在平衡因子绝对值等于2时开始调整到绝对值为1或0,在平衡因子绝对值为2时,二叉排序树会出现四种不同的情况的树形,因此这时需要分别单独讨论来降低平衡因子。 1.2.7 平衡二叉树的调整方法  平衡...

    网络管理协议及应用开发

    2.3 几种标准网络管理协议 2.3.1 SNMP 2.3.2 CMIS/CMIP 2.3.3 CMOT 2.3.4 LMMP 2.4 管理信息库 2.4.1 ASN.1语法 2.4.2 MIB树的结构 2.5 小结 第三章 简单网络管理协议SNMP 3.1 SNMP的工作原理 3.2 安全识别及排序 ...

Global site tag (gtag.js) - Google Analytics