`
yaya_wiscom
  • 浏览: 49916 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

常用排序算法

阅读更多

      排序在程序开发的过程中还是比较常用的,例如二分查找法比线性查找法要快的多,然而二分法只能应用于有序的数据,简单的说排序有时候会作为查找的一个初始步骤;也很有可能按照某项业务需求对数据进行排序。目前比较常用的排序算法也就是:冒泡、选择和插入排序,还有高级点的希尔排序和快速排序。

 

  • 冒泡排序:

 

 冒泡排序是许多人学习的前几种排序算法之一。它很大的优点是简单,如果在某种情况下需要一种可以快速编程的小排序算法,就可以选择冒泡排序。冒泡算法的思路比较容易理解,就是连续的扫描待排序的记录,每扫描一次,都会移动最大的记录,使之更接近于顶部,就像气泡一样缓慢上升。

 

int out,in;
for(out = testArray.length -1; out> 1; out--)
     for(in=0; in<out; in++)
	if(testArray[in] > testArray[in+1])
		swap(in,in+1);
------------------------------------------------------------------------------------------
private static void swap(int one ,int two){
		int temp = testArray[one];
		testArray[one] = testArray[two];
		testArray[two] = temp;
}

 

 要将最小的数据项放在数组的最开始(数组下标为0),并将最大的数据项放在数组的最后(数组下标n-1)。外层for循环的计算器out从数组的最后开始,下标大于out的数据项表示都已经是排好序的。变量out在每完成一次循环后左移一位,因此算法就不再处理那些已排好序的数据项了。

 

 

  • 选择排序:

 

选择排序就是把所有的元素扫描一次,从中选择出最小的元素将有序的队员都排在队列的左边,而冒泡排序中则是排列在队列的最右边。

 

int out,in,min;
for(out=0; out<testArray.length-1; out++)
{
	min = out;
	for(in = out+1; in<testArray.length; in++){
		if(testArray[in]<testArray[min])
			min = in;
		swap(out,min);
	}
}

 从数组开头开始(数组下标为0)向高位增长,内层循环变量in,从out所指变量的下一位开始,同样是向右位移。依次比较如果内层循环得到的项目数据更小则交换。

 

 

 

  • 插入排序

 

从数组的第二个元素开始,向右移动。使用外层变量out标识未排序部分最左端的数据。在内层的while循环中,in变量从out开始,向左移动,依次比较数组元素。

int in,out;
for(out =1; out< testArray.length; out++){
	int temp = testArray[out];
	in = out;
	while(in > 0 && testArray[in-1] >= temp){
		testArray[in] = testArray[in-1];
		--in;
	}
	testArray[in] = temp;
}

 

 

 

 

 

 

分享到:
评论

相关推荐

    python常用排序算法汇总

    该程序包含7大排序算法: # sort.bubbleSort() #冒泡排序 # sort.shellSort() #希尔排序 # sort.insertionSort() #插入排序 # sort.Selectionsort1() #选择排序 # sort.heapSort() #堆排序 # sort.countSort() ...

    常用排序算法总结 常用排序算法总结 常用排序算法总结

    常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结

    浅析基于C语言的常用排序算法比较.pdf

    插入排序算法同样是基于C语言的一种常用排序算法。插入排序的基本思想是:把待排序的序列分为已排序和未排序两部分,每次将一个未排序的元素,按照其大小插入到已排序序列中的适当位置,直到所有元素都被插入。插入...

    常用排序算法的比较

    ### 常用排序算法的比较 #### 一、设计内容和要求 1. **设计内容**:通过随机函数产生N个随机整数,并采用多种排序算法对这些数进行排序,进而分析各种算法所需的排序时间,以确定哪些算法更为高效。 2. **设计...

    常用排序算法java演示

    本文将深入探讨标题"常用排序算法java演示"中涉及的知识点,包括排序算法的原理、Java实现方式以及其在实际应用中的图形演示。 首先,让我们逐一了解几种常见的排序算法: 1. **冒泡排序(Bubble Sort)**:这是一...

    常用排序算法的动态演示系统

    常用排序算法的动态演示系统 在本系统中,我们主要实现了五种常用的排序算法:冒泡排序法、快速排序法、直接插入排序法、折半插入排序法和树形选择排序法。这些算法都是在计算机科学中最基本和最重要的排序算法,...

    实验六 常用排序算法的对比分析

    石家庄铁道大学 刘立嘉 算法与数据结构 实验六 常用排序算法的对比分析

    几种常用排序算法的C语言实现

    一些常用排序算法的C语言实现,包括直接选择排序,希尔排序,直接插入排序,快速排序,归并排序,冒泡排序,堆排序

    常用排序算法介绍_源码.rar|排序算法_源码.rar

    常用排序算法示例程序,内含TChart8控件。 示例程序涉及15种排序算法,使用C++代码实现,包含每种算法核心思想的介绍;可设置排序的数据个数、数据刷新显示时间等;使用TChart控件显示数据,显示界面可缩放。

    常用排序算法源码

    在编程领域,排序算法是计算机科学中的核心概念,它们用于对数据进行有序排列。这里我们主要探讨五种常见的排序算法,这些算法的源码你可以在提供的压缩包文件中找到:MergeSort(归并排序)、RadixSort(基数排序)...

    golang实现的常用排序算法

    golang实现的常用排序算法 golang实现的常用排序算法 golang实现的常用排序算法

    各种常用排序算法的C语言实现

    本资源提供了各种常用排序算法的C语言实现,源自严蔚敏的经典教材《数据结构》。下面将详细介绍这些排序算法及其在C语言中的实现原理。 1. 冒泡排序(Bubble Sort) 冒泡排序是最基础的排序方法,通过不断交换相邻...

    常用排序算法,括交换法,冒泡法等

    ### 常用排序算法详解 #### 一、引言 排序算法作为计算机科学中的基础且重要的组成部分,在现实生活中有着广泛的应用。随着数据量的不断增大,如何高效地进行排序成为了一个亟需解决的问题。本篇文章将从简单排序...

    常用排序算法介绍_示例程序|排序算法_程序.rar

    本资源"常用排序算法介绍_示例程序"提供了一个深入理解这些算法的平台,结合了理论与实践,帮助开发者直观地看到各种排序算法的工作过程。 首先,让我们逐一探讨这些排序算法的核心思想: 1. **冒泡排序**:通过...

    C++常用排序算法(C++)

    【C++常用排序算法】 在计算机科学中,排序算法是用于对一组数据进行排列的算法。C++作为一种强大的编程语言,提供了多种实现排序的方法。本文将详细介绍C++中常用的几种排序算法及其实现。 1. **冒泡排序** 冒泡...

    Java常用排序算法&程序员必须掌握的8大排序算法+二分法查找

    本资料包聚焦于"Java常用排序算法"和"程序员必须掌握的8大排序算法",并深入探讨了"二分法查找"这一高效搜索技术。 首先,我们来看八大排序算法。这些算法包括: 1. **冒泡排序**:最简单的排序方法,通过不断交换...

    C++ 常用排序算法

    以下是对C++中几种常用排序算法的详细说明: 1. **选择排序(Selection Sort)**: 选择排序是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始...

    8大常用排序算法实现

    本文将详细解析八大常用排序算法的实现,帮助你更好地理解和测试这些算法。 1. 冒泡排序(Bubble Sort): 冒泡排序是一种简单的交换排序,通过不断比较相邻元素并交换,使得每次遍历都将最大(或最小)的元素“冒...

    C语言常用排序算法

    C语言常用排序算法 在计算机科学中,排序算法是指将一组无序的数据按照某种顺序排列的方法。排序算法是编程语言中非常重要的一部分,特别是在C语言中。下面将介绍几种常用的排序算法,包括选择排序、插入排序等。 ...

    Java常用排序算法

    在这个主题中,我们将深入探讨Java中的一些常用排序算法。排序是计算机科学中一个基础且重要的概念,它涉及将一组数据按照特定顺序进行排列。以下是Java中常见的几种排序算法: 1. 冒泡排序(Bubble Sort) 冒泡...

Global site tag (gtag.js) - Google Analytics