`

各种排序

 
阅读更多

插入排序:

  1. 从第一个元素开始,该元素可以认为已经被排序
  2. 取出下一个元素,在已经排序的元素序列中从后向前扫描
  3. 如果该元素(已排序)大于新元素,将该元素移到下一位置
  4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
  5. 将新元素插入到该位置中
  6. 重复步骤2

 

void InsertSort(char array[],unsigned int n)
 {
    int i,j;
    int temp;
    for(i=1;i<n;i++)
    {
      temp = array[i];//store the original sorted array in temp
      for(j=i ; j>0 && temp < array[j-1] ; j--)
      {
          array[j]=array[j-1];
      }
      array[j]=temp;
    }
 }
 

 

堆排序:

先将所给数据构造成一棵树,然后将此树调整为“大顶堆”(或小顶堆)(从叶子节点往根节点调整)。然后选得一个关键字为最大的记录,然后与序列中最后一个记录交换,之后继续对序列中前 n-1 记录进行“筛选”,重新将它调整为一个“大顶堆”再将堆顶记录和第 n-1 个记录交换,如此反复直至排序结束

 

快速排序:

将第一个数先保存到临时变量里,然后以它为基准并占用它的位置

public  static void quick(int[] date,int start,int  end){
		if(start<end){
		int k = paixu(date,start,end);
		quick(date,start,k-1);
		quick(date,k+1,end);
		}
	}
	
	public static int paixu(int[] date,int start,int  end){
		int k;
		int temp=date[start];
		while(start<end){
			while(start<end&&temp<=date[end]){
				end--;
			}
			date[start]=date[end];
			while(start<end&&temp>=date[start]){
				start++;
			}
			date[end]=date[start];
		}
		k = start;
		date[start]=temp;
		return k;
	}
 

 

冒泡排序:

可以加标志位进行优化

public static void maopao(int date[]){
		for(int i=0;i<date.length;i++){//需要进行多少趟
			for(int j=1; j<date.length-i;j++){//每趟都从第0个和第1开始比较
				if(date[j]<date[j-1]){
					swap(date,j,j-1);
				}
			}
		}
	}
 

 

希尔排序:

将记录序列分成若干子序列,每个子序列分别进行插入排序。因为其减少了复制的次数,所以比直接插入排序要快许多。 当N值很大时数据项每一趟排序需要的个数很少,但数据项的距离很长。 当N值减小时每一趟需要和动的数据增多,此时已经接近于它们排序后的最终位置。(关键字较小的记录不是一步一步向前,而是跳跃式的向前)

	public static void shell(int[] date ){
		int step = date.length;
		int temp = 0;
		while((step = step/2)>0){
			//对步长step进行排序
			for(int i=step;i<date.length;i++){
				
				if(date[i]<date[i-step]){//需要交换
					temp = date[i];
					System.out.println("step"+temp);
					int j;
					for(j=i;j>0&&temp<date[j-step];j=j-step){
						date[j]=date[j-step];
					}
					
					date[j] = temp;
				}
			}
		}
	}
分享到:
评论

相关推荐

    数据结构 各种排序算法

    在C++编程中,实现各种排序算法能够帮助理解它们的工作原理,并且可以对比不同算法在不同情况下的性能。以下是几种常见的排序算法的详细说明: 1. 直接插入排序(Insertion Sort): 直接插入排序是一种简单的排序...

    各种排序算法比较

    ### 各种排序算法比较 #### 一、稳定性比较 稳定性是排序算法中一个重要的特性,指的是相等的元素在排序前后保持原有的相对位置不变。根据文档提供的信息,我们可以总结出以下结论: - **稳定排序**:插入排序、...

    各种排序方法分析详解

    【各种排序方法分析详解】 排序算法是计算机科学中不可或缺的一部分,尤其在处理大量数据时,高效排序算法能够显著提升程序的运行效率。本文将详细介绍五种经典的排序算法:插入排序、希尔排序、冒泡排序、选择排序...

    数据结构-各种排序完整示例程序

    本资源包“数据结构-各种排序完整示例程序”提供了C语言实现的各种经典排序算法,帮助学习者深入理解并掌握这些算法的实际应用。 1. 希尔排序(Shell Sort): 希尔排序是一种基于插入排序的算法,通过将待排序数组...

    各种排序算法的实验(源代码+实验报告)

    本资源“各种排序算法的实验(源代码+实验报告)”提供了一个全面的平台,用C++语言实现了多种经典的排序算法,并附带了详细的实验报告,便于学习者理解和掌握这些算法。 1. **快速排序**:由英国计算机科学家C.A.R...

    数据结构各种排序算法实现及比较

    数据结构各种排序算法实现及比较 在本文中,我们将讨论各种排序算法的实现和比较,包括简单选择排序、直接插入排序、希尔排序、冒泡排序、快速排序等。这些算法都是数据结构课程设计报告中常用的排序算法。 简单...

    各种排序方法汇总,程序事例

    ### 各种排序方法汇总与程序实例解析 #### 一、选择排序(Selection Sort) **基本思想:** 选择排序是一种简单直观的比较排序算法。它的工作原理是:首先在未排序序列中找到最小(或最大)元素,存放到排序序列的...

    各种排序算法源代码

    **各种排序算法源代码** 在计算机科学中,排序算法是用于对一组数据进行排序的算法。排序对于数据处理、数据库管理、性能优化等任务至关重要。本文将深入探讨12种经典的排序算法,它们的C语言实现及工作原理。 1. ...

    各种排序算法的稳定性和时间复杂度总结

    ### 各种排序算法的稳定性和时间复杂度总结 #### 排序算法的稳定性与时间复杂度概述 在计算机科学中,排序算法是基础且重要的组成部分,用于将一系列数据按照特定顺序排列。排序算法的效率通常由其时间复杂度决定...

    总结了各种排序算法,并用C++代码实现,并有演示

    本资源"总结了各种排序算法,并用C++代码实现,并有演示",提供了丰富的学习材料,包括不同类型的排序算法以及它们的C++实现,还有可能的可视化演示,帮助理解每种算法的工作原理。 首先,让我们逐一了解常见的排序...

    数据结构课程设计(各种排序)

    本项目"数据结构课程设计(各种排序)"主要关注的是各种排序算法的实现,包括直接插入排序、希尔排序、直接选择排序、冒泡排序、快速排序、堆排序以及二路归并排序。这些排序算法在实际编程中有着广泛的应用,理解...

    各种排序算法的c实现

    各种排序算法各种排序算法各种排序算法各种排序算法各种排序算法各种排序算法各种排序算法

    c#各种排序算法大全

    根据提供的标题、描述以及部分代码内容,我们可以总结出与C#中的各种排序算法相关的知识点。首先,虽然示例代码是用Java编写的,但我们可以将其转换为C#的知识点,并探讨这些排序算法如何在C#中实现。 ### 常见排序...

    各种排序的java代码归总

    Java作为一种广泛应用的编程语言,其在处理数组和集合时,各种排序算法的实现是程序员必须掌握的技能。以下是对标题“各种排序的java代码归总”及描述中提到的排序算法的详细解析: 1. **冒泡排序(Bubble Sort)**...

    基于C#的各种排序算法

    "基于C#的各种排序算法" 在本资源中,我们将详细介绍基于C#语言的各种排序算法,包括冒泡排序、选择排序、插入排序、奇偶排序和快速排序等。这些排序算法都是使用C#代码实现的,并且已经通过测试,旨在提供给大家...

    各种排序方法汇总(含有源程序)

    本资源包“各种排序方法汇总(含有源程序)”提供了多种经典的排序算法的源代码实现,包括堆排序、基数排序、快速排序、直接插入排序和直接选择排序。这些排序算法各有特点,适用于不同的场景,理解它们的原理和实现...

    各种排序算法总结和比较

    在软件开发领域,排序算法是实现数据有序处理的核心算法之一。本文对常见的排序算法进行总结和...各种排序算法的特点和适用场景各异,因此在实际应用中应根据具体情况来选择合适的排序方法,以便达到最优的排序效率。

    数据结构中个各种排序法

    本篇将深入探讨数据结构中的各种排序方法,包括基本概念、分类、重要术语以及具体的排序算法。 1. **排序的基本概念** - 排序,又称分类,是指将一个元素顺序随机的序列转化为按关键字有序的序列。关键字是用于...

Global site tag (gtag.js) - Google Analytics