//冒泡排序
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
分享到:
相关推荐
### 各种排序算法小结 #### 一、引言 排序算法是在计算机科学中非常基础且常用的一类算法。由于在实际应用中往往需要处理大量数据,因此对排序算法的效率有着较高要求。通常,我们会关注算法的时间复杂度来评估其...
这里我们将详细讨论几种经典的排序算法,包括快速排序、归并排序、堆排序、Shell排序、插入排序、冒泡排序以及选择排序。 1. **快速排序**:快速排序是由C.A.R. Hoare提出的,它采用了分治策略,以选定的“支点”...
本篇文章将概述几种常见的排序算法,包括快速排序、归并排序、堆排序、Shell排序、插入排序、冒泡排序、交换排序、选择排序以及基数排序。 1. **快速排序**(QuickSort): - 快速排序采用了分治策略,以一个支点...
### 各种经典排序算法小结---必知必会 #### 概述 排序算法是计算机科学中的一个重要组成部分,主要用于将一系列数据按照特定顺序(升序或降序)进行排列。排序算法的学习对于理解算法复杂度、算法设计原理以及提高...
### 排序算法的稳定性和时间复杂度小结 #### 一、引言 排序算法是计算机科学中的基本算法之一,广泛应用于各种场景之中。排序算法不仅关注排序的速度...总之,理解每种排序算法的特点对于合理选择和应用算法至关重要。
输入n个整数,分别用希尔排序、快速排序、堆排序和归并排序实现由小到大排序并输出排序结果。要求n=10,15,20进行三组排序实验...实验目的:掌握希尔排序、快速排序、堆排序、归并排序算法。 (zip中含代码及运行截图)
本文将重点介绍JavaScript中常见的四种排序算法:冒泡排序、插入排序、快速排序和希尔排序。这些算法各有特点,适用于不同的场景,理解它们的工作原理有助于优化代码性能。 1. **冒泡排序**: 冒泡排序是最基础的...
冒泡排序是最基础也是最容易理解的一种排序算法。它的基本思想是通过重复遍历待排序的序列,每次比较相邻两个元素并将它们按顺序调整位置,直到整个序列排序完成。 **算法步骤**: - 从第一个元素开始,比较相邻两...
选择排序是一种简单直观的排序算法,它的工作原理可以分为以下几个步骤: 1. **理解选择排序**:选择排序从数组的第一个元素开始,遍历数组寻找当前未排序部分的最小(或最大)元素。找到后,将这个最小(或最大)...
本篇文档旨在总结几种基本的数据结构与算法概念,包括但不限于队列、链表、堆栈、图和树等。这些数据结构和算法是软件开发人员必须掌握的基础技能之一。 ### 二、数据结构详解 #### 1. 队列(Queue) 队列是一种...
这里我们将深入探讨几种常见的排序算法,如冒泡排序、选择排序和插入排序,并分析一个递归求斐波那契数列的问题,以及模拟事件处理的简单设计模式。 首先,让我们来看冒泡排序。冒泡排序是一种简单的排序算法,它...
以上是Python中常见的四种排序算法:归并排序、插入排序、交换元素的技巧以及选择排序的介绍和实现。每种算法都有其适用的场景,了解它们的工作原理和性能特点对于优化代码和解决问题至关重要。在实际编程中,根据...
通过系统时钟测量每种排序算法的执行时间,我们可以观察到它们在处理大量数据时的性能差异。这样的实践有助于我们理解每种算法的优缺点,为实际问题选择合适的排序算法。 实验结果的分析可能包括绘制图表,展示每种...
以上四种排序算法都是学习和了解排序概念的基础。它们各有优缺点,在不同的应用场景下有着不同的表现。在实际开发过程中,根据具体需求选择合适的排序算法是非常重要的。例如,对于小规模数据集,插入排序可能更高效...
6. 小结与体会:总结设计过程中的收获和体验,以及对快速排序算法的理解。 【时间安排】 根据课程设计的时间表,学生需要在规定时间内完成资料查阅、程序编写、调试和报告撰写等工作。 【关键字】 本设计涉及到...
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 顺序表结构 ...
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 伸展树 ...