`
pingchajava
  • 浏览: 30289 次
  • 性别: Icon_minigender_1
  • 来自: 常德
社区版块
存档分类
最新评论

简单排序

阅读更多

排序算法的分类如下:

 

1.插入排序(直接插入排序、折半插入排序、希尔排序);

2.交换排序(冒泡排序、快速排序);
* 3.选择排序(直接选择排序、堆排序);

 4.归并排序;

 5.基数排序。

 

这里讲简单排序(冒泡排序、选择排序、插入排序)

 

 

冒泡排序:

   相邻两元素进行比较,如有需要则进行交换,每完成一次循环就将最大元素排在最后(如从小到大排序),下一次循环是将其他的数进行类似操作。

 

性能方面:比较次数O(n^2),n^2/2;

              交换次数O(n^2),n^2/4

public static void swap(int one ,int two){
		long temp = a[one];
		a[one] = a[two];
		a[two] = temp;
		
	}

 

public static void bubbleSort(long [] a){
		int out , in;
		for (out = a.length-1; out>1 ; out--){  // 这重循环是比较的轮数
			
			//比较的次数
			for (in = 0; in < out; in++ ){
				if (a[in]>a[in+1])
				swap(in, in+1);
			}
		}
		
	}

 

 

选择排序:

 

在未排序的数中,选中一个数(currn)作为标记,与下一个数 (next) 作为比较,如果 next 小于 currn,则取消该数的标记,把标记赋于 next ,再用这个next 去比较另一个数,如此反复直到所有的数比完,标记出最小的那个数再把这最小的数最第一个数进行交换

 

性能方面:比较次数O(n^2),n^2/2 交换次数O(n),n

 

/**
	 * 选择排序
	 * @param a
	 */
	public static void selectSort(long []a){
	   int out ,in ,min;
	   
	   for (out = 0; out<a.length -1; out++){
		   min = out;
		   
		   for (in = out+1 ;in<a.length ;in++){
			   if (a[min] > a[in]){
				   min = in;
			   }
		   }
		   
		swap(out, min);
		   
	   }
	}

 

 

插入排序:

 

   将一个记录插入到已排好序的有序表(有可能是空表)中,从而得到一个新的记录数增1的有序表

 

 性能:复制次数O(n),n^2/4 比较次数是前两者的一般

/**
	 * 插入排序
	 * @param a
	 */
	public static void insertSort(long [] a){
		
		int length = a.length;
		int out , in  ;
		
		for (out = 1; out < length ; out++){
		   long temp = a[out];  //后面排序的第一个数
		   in = out;
		   
		   while (in > 0 && a[in -1] >= temp){
			   
			   a[in] = a[in-1];  //in 这项数据后右移动
			   in -- ;
		   }
		   
		   a[in] = temp;
			
		}
		
	}

 

三者排序之间的比较:

  

选择排序与冒泡排序:

     交换次数比冒泡排序少多了,由于交换所需CPU时间比比较所需的CUP时间多,所以选择排序比冒泡排序快。
* 但是N比较大时,比较所需的CPU时间占主要地位,所以这时的性能和冒泡排序差不太多,但毫无疑问肯定要快些。

 

插入排序:复制所需的CPU时间较交换少,所以性能上比冒泡排序提高一倍多,而比选择排序也要快。

分享到:
评论

相关推荐

    简单排序算法简介

    ### 简单排序算法简介 #### 一、简单排序算法概述 在计算机科学领域,**排序算法**是一类非常基础且重要的算法。这类算法旨在将一组无序的数据按照特定的顺序进行排列。由于实际应用中往往需要处理大量的数据,...

    第四章 简单排序(C++)_PDF(2020.06.10).rar

    在本资源中,我们主要探讨的是C++编程语言中的简单排序算法。这些算法是计算机科学的基础,对于理解和解决编程问题,特别是在数据处理和优化效率方面至关重要。"NOIP"(全国青少年信息学奥林匹克竞赛)和"信奥"指的...

    1.10编程基础之简单排序(10题)--题目 有链接.pdf

    简单排序是编程基础中的一个重要环节,它包括了基本的排序算法,如选择排序、插入排序、冒泡排序等。以下是对“1.10编程基础之简单排序(10题)--题目 有链接.pdf”文件内容的详细知识点说明。 1. 排序算法概述: ...

    VB 排序 简单排序 文本框取数字排序 字符串取数字排序

    在这个主题中,我们将深入探讨VB中的简单排序算法,特别是如何处理文本框中的数字排序以及从字符串中提取数字进行排序。 1. **简单排序算法**: - **冒泡排序**:是最基础的排序方法,通过不断地比较相邻元素并...

    链表的简单排序

    链表的简单排序 链表是一种基本的数据结构,它由多个节点组成,每个节点都包含一个指向下一个节点的指针。今天,我们来讨论链表的简单排序。 链表的简单排序需要使用到链表的基本操作,包括链表的创建、遍历和排序...

    利用C++向量的简单排序

    利用C++向量的简单排序 本资源旨在介绍利用C++中的Vector实现简单排序的方法。该资源通过实例代码,详细地展示了如何使用Vector容器来存储整数,并使用选择排序算法对其进行排序。 知识点一:C++中的Vector容器 ...

    快速排序归并排序简单排序算法比较

    自己写的三个排序算法的比较。快速排序、归并排序、简单排序 对三个排序算法所消耗时间进行统计,比较时间效率 程序是在Linux下用C写的,vc下并未做测试。

    简单插入排序,实现简单排序方法

    c++实验之一:简单插入排序 实现简单排序方法

    Excel简单排序的例子.rar

    本例子以"26.4简单排序的例子.xls"为载体,展示了如何按照“科目名称”的笔划顺序进行升序排序。 首先,打开Excel工作簿,可以看到一个包含多个科目名称的数据表。这些科目可能是学校课程、公司部门或其他需要排序...

    西电数据结构第六次上机简单排序代码

    题目一 简单排序方法 【问题描述】 简单排序算法主要包括冒泡排序、简单选择排序和直接插入排序,它们都是时间复杂度为的排序方法,需要熟练掌握。 【基本要求】 用随机函数产生10000(或更多)个整数(或浮点数...

    简单排序法(C#)

    本项目“简单排序法(C#)”聚焦于三种基本的排序算法:冒泡排序、选择排序和插入排序,这些都是C#编程初学者必须掌握的基本技能。 1. **冒泡排序**: 冒泡排序是一种简单的排序算法,通过重复遍历待排序的元素列表...

    5.简单排序方法.ppt

    简单排序方法包括插入排序、冒泡排序和简单选择排序,它们都是基于比较的关键码值来改变数据元素的顺序。 1. 插入排序: 插入排序的核心在于将一个数据插入到已排序的序列中,形成一个新的有序序列。它首先假设第...

    《Java数据结构和算法》学习笔记(2)——4种简单排序算法

    本文将深入探讨四种简单的排序算法:插入排序、冒泡排序、选择排序。这些算法虽然在复杂度上不如高级排序算法如快速排序或归并排序,但它们提供了基础的排序逻辑,有助于理解更复杂的算法思想。 首先,我们来详细...

    java数组与简单排序

    本主题将深入探讨“java数组与简单排序”,涵盖有序数组、线性查找和二分法查找等核心概念。 有序数组是指数组中的元素按照特定顺序排列,例如升序或降序。在处理有序数组时,我们可以利用其特性来优化查找和操作...

    1.认识复杂度和简单排序算法1

    本节我们将深入探讨时间复杂度、简单排序算法以及评估算法效率的方法。 时间复杂度是衡量算法运行时间与输入数据量之间的关系,通常用大O记法表示。常数操作,如赋值`int a = arr[i]`或基本算术运算`+-*/`、位运算...

    第四章 简单排序(C++)_codes(2020.06.04).rar

    在本压缩包文件"第四章 简单排序(C++)_codes(2020.06.04).rar"中,包含的是关于C++编程语言实现简单排序算法的相关代码。这些代码可能是为了帮助学习者理解并掌握基础的排序算法,特别是针对信息学竞赛(如信奥)和...

    各种简单排序

    ### 各种简单排序 #### 内容概览 本文主要介绍了几种常见的简单排序算法,包括冒泡排序、交换排序(通常指冒泡排序的一种变体)、选择排序以及插入排序。这些排序算法虽然效率不是最高,但它们的概念简单且易于...

    简单排序算法--类的简单使用

    在编程领域,排序算法是计算机科学中的基础概念,它用于对一组数据进行排列,以便于检索、分析或处理。在本主题中,我们将探讨如何使用C++类来实现不同的排序算法,并理解类在实现这些算法时的角色。我们将重点关注...

Global site tag (gtag.js) - Google Analytics