`
_念-H
  • 浏览: 9476 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

三大排序

    博客分类:
  • JAVA
阅读更多

1、冒泡排序

       优:简单,稳定,空间复杂度较低

       缺:慢,时间复杂度较高

	public static void main (String []args){
		int []a ={1,6,2,4,9,0,3,7,5,8};
		sort(a);
		for(int i:a){
			System.out.print(i+"\t");
		}
	}
	/**
	 * 冒泡排序
	 * @param a
	 */
	public static void sort(int []a){
		int length = a.length;
		int tem = 0;
		for(int i = 0; i<length-1; i++){
			for(int j = i+1; j<length;j++){
				if(a[i]>a[j]){	//交换数据
					tem = a[i];
					a[i] = a[j];
					a[j] = tem;
				}
			}
		}
	}

2、插入排序

       优:快,稳定

       缺:比较次数不一定,比较次数少,则数据移动多

	public static void main (String []args){
		int []a ={1,6,2,4,9,0,3,7,5,8};
		insertSort(a);
		for(int i:a){
			System.out.print(i+"\t");
		}
	}
	/**
	 * 插入排序
	 * @param a
	 */
	public static void insertSort(int []a){
		for(int i = 1 ; i < a.length ; i++){
			int j = i - 1;
			int tem = a[i];
			while(j>=0 && a[j]>tem){
				a[j+1] = a[j];
				j--;
			}
			a[j+1] = tem;
		}
	}

 

3、快速排序

       优:快,数据移动少

       缺:不稳定

	public static void main (String []args){
		int []a ={1,6,2,4,9,0,3,7,5,8};
		quickSort(a,0,a.length-1);
		for(int i:a){
			System.out.print(i+"\t");
		}
	}
	/**
	 * 快速排序
	 * @param a
	 * @param low
	 * @param height
	 */
	public static void 	quickSort(int []a , int low , int height){
		if(low < height){
			int tem = quick(a,low,height);
			quickSort(a,low,tem-1);
			quickSort(a,tem+1,height);
		}
	}
	public static int quick(int a[],  int low, int height){
		int n = low;
		int x = a[low];
		while(low < height){
			if(a[height] < x){
				if(a[low] > x){
					int tem = a[low];
					a[low] = a[height];
					a[height] = tem;
				}else{
					low++;
				}
			}else{
				height--;
			}
		}
		a[n] = a[low];
		a[low] = x;
		return low;
	}

 

 

分享到:
评论

相关推荐

    c三大排序c三大排序c三大排序c三大排序c三大排序c三大排序c三大排序c三大排序c三大排序 vs2013的cpp

    c三大排序c三大排序c三大排序c三大排序c三大排序摘要必须大于100个字节!摘要必须大于100个字节!摘要必须大于100个字节!摘要必须大于100个字节!摘要必须大于100个字节!

    java插入冒泡选择三大排序

    Java中常见的三大排序算法包括插入排序、冒泡排序和选择排序。这三种排序算法各有特点,适用于不同的场景,理解并掌握它们对于提升编程技能非常有帮助。 **1. 插入排序** 插入排序是一种简单直观的排序算法,它的...

    Java三种排序 Java三种排序

    这里我们将探讨三种基本的排序算法:冒泡排序、选择排序和插入排序。这些算法都是基于数组的简单排序方法,适合理解排序的基本原理。 首先,我们来看冒泡排序。冒泡排序是一种交换排序,其核心思想是通过反复遍历待...

    程序员必备的八大排序三大查找

    每天都在叫嚣自己会什么技术,什么框架,可否...要编写出优秀的代码同样要扎实的基础,如果排序和查找算法学的不好,怎么对程序的性能进行优化?废话不多说,本文要介绍的这些排序算法就是基础中的基础,程序员必知!

    八大排序三大查找

    【八大排序】 1. 直接插入排序:其基本思想是通过不断将未排序的元素插入到已排序的序列中,逐步构建完整的有序序列。它适用于小规模数据或部分有序的数据,时间复杂度为O(n^2)。 2. 希尔排序:通过设置不同的间隔...

    C++实现三种重要排序算法

    在本实验中,我们主要关注的是使用C++编程语言实现三种经典的排序算法:冒泡排序(Bubble Sort)、选择排序(Selection Sort)以及快速排序(Quick Sort)。这些排序算法是计算机科学基础课程中的重要组成部分,它们...

    冒泡排序、归并排序、快速排序的笔记包含代码

    帮助大家更好的了解到常用的三大排序,冒泡排序、归并排序及快速排序。冒泡排序:冒泡排序是一种简单的排序算法,它重复地遍历要排序的列表,比较每对相邻的项,并在必要时交换它们的位置,直到没有任何一对数字需要...

    三路归并_C语言_三路归并排序_三路归并_

    **三路归并排序**是一种高效的排序算法,尤其在处理含有大量重复元素的序列时表现优秀。该算法基于归并排序的思想,但将其分为三个部分处理,而不是传统的两个部分。在本文中,我们将深入探讨三路归并排序的原理、...

    3个数从小到大排序

    本文将通过一个具体的示例——使用C语言对三个整数进行从小到大的排序,来深入解析排序的基本概念、实现方法以及代码细节。 #### 排序算法简介 排序算法是指一种能够将一串记录按照关键字的大小顺序排列的方法。...

    VC++多线程实现三种排序算法比较----冒泡排序、快速排序、归并排序

    本篇文章主要探讨了如何在VC++环境中利用多线程技术来实现三种经典的排序算法:冒泡排序、快速排序和归并排序,并对它们的性能进行了比较。 首先,冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,一次...

    各种排序算法的C语言实现源代码(全面)

    堆排序利用了大顶堆或小顶堆的概念,将数组转化为一个堆,然后不断调整堆顶元素。以下是C语言实现: ```c void heapify(int arr[], int n, int i) { int largest = i; int left = 2 * i + 1; int right = 2 * i ...

    java 语言三种排序 程序

    这三种排序算法各有优劣,插入排序适合小规模或者部分有序的数据,冒泡排序在数据接近有序时效率较高,而选择排序在任何情况下性能都保持一致,但并不适合大规模数据。实际应用中,通常会使用更高效的排序算法,如...

    VB中三种排序方法

    如果前一个元素比后一个元素大,它们的位置就会交换,直到没有更多的交换发生,即数列已排序。在VB中,你可以使用For...Next循环和If...Then语句来实现这个过程。冒泡排序的时间复杂度为O(n²),适用于小规模或部分...

    8大排序算法

    "8大排序算法" 在计算机科学中,排序算法是一种基本的算法,能够高效地对大量数据进行排序。在本文中,我们将介绍8种常用的排序算法,包括插入排序、交换排序、选择排序、归并排序和分配排序等。 一、插入排序 ...

    MoreWindows白话经典算法之七大排序第2版(高清)

    本书《更多Windows白话经典算法之七大排序第2版》是一部深入浅出讲解七种经典排序算法的著作,旨在帮助读者理解并掌握冒泡排序、直接插入排序、直接选择排序、希尔排序、归并排序、快速排序以及堆排序等基本概念和...

    VB 三个数的排序

    对于VB中的三个数排序,我们主要关注的是升序排序,即把三个数按从小到大的顺序排列。 在VB中,我们可以使用IF语句或SELECT CASE结构来实现这个功能。下面是一种简单的方法,通过比较三个数的大小并交换它们的位置...

    排序问题(选择法排序, 冒泡法排序, 合并法排序),VB6.0源代码编写

    本主题聚焦于三种常见的排序算法:选择法排序、冒泡法排序和合并法排序,这些方法在VB6.0编程环境中都有实现的源代码。 1. **选择法排序(Selection Sort)**: - 基本思想:在未排序序列中找到最小(或最大)元素...

    List Control排序的程序,带排序的三角形

    本项目是一个关于`List Control`排序功能的示例,包含了一个带有排序指示三角形的实现。这个示例旨在帮助开发者理解和应用`List Control`的排序功能。 `List Control`,在MFC中通常通过`CListCtrl`类来操作,允许...

    快速排序 希尔排序 插入排序 折半排序算法

    - 基本思想:选择一个基准元素,将数组分为两部分,一部分的元素都比基准小,另一部分的元素都比基准大,然后对这两部分分别进行快速排序。 - 主要步骤包括分区操作、递归排序两个阶段。 - 平均时间复杂度为O(n ...

    八大排序.pdf

    八大排序算法包括:冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序、堆排序和计数排序。每种算法都有其适用场景和优缺点。 冒泡排序是一种简单的交换排序算法,通过重复遍历待排序的数列,比较相邻的...

Global site tag (gtag.js) - Google Analytics