`
笑揽清溪月
  • 浏览: 14341 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

排序方法的总结

阅读更多
[img][/img]排序方法的总结


今天一共学习了四种排序方法,冒泡排序,选择排序,插入排序和希尔排序。



首先是最简单的冒泡排序,代码如下

public  static int[] maoPao(int[] x){
for(int i=0;i<x.length;i++){
for(int j=i+1;j<x.length;j++){
if(x[i]>x[j]){
int temp =x[i];
x[i]=x[j];
x[j]=temp;
}
}
}
return x;
}
假设有数组3,4,5,1,2

则第一轮排序结果1,4,5,3,2
第二轮排序结果1,2,5,4,3
第三轮排序结果1,2,3,5,4
第四轮排序结果1,2,3,4,5

简而言之就是将小的数字浮上来,轻的东西浮上来,称之为冒泡排序。

选择排序的代码如下:

public  static int[] xuanZe(int[] x){
for(int i=0;i<x.length;i++){
int lowerIndex =i;
//找出最小的 索引
for(int j=i+1;j<x.length;j++){
if(x[j]<x[lowerIndex]){
lowerIndex=j;
}
}
//交换
int temp=x[i];
x[i]=x[lowerIndex];
x[lowerIndex]=temp;

}
return x;
}
假设有数组3,4,5,1,2
则i=0时,lowerIndex=0,j=1,如果x[1](x[j])<x[0](x[lowerIndex]),则交换它们的值,
    则第一轮排序结果1,4,5,3,2
      第二轮排序结果1, 2,5,4, 3
      第三轮排序结果1, 2,3, 4, 5
      第四轮排序结果1, 2,3, 4, 5

每一次排序都将i索引以后最小的索引置于i的位置,这就是选择排序。

然后是插入排序,代码如下:
public static int[] caRu(int[] x){
for(int i=1;i<x.length;i++){
for(int j=i;j>0;j--){
if(x[j] < x [j - 1]){
int temp =x [j];
x [j]=x[j -1];
x[j - 1 ]=temp;

}


}

}
return x;
}

假设有数组3,4,5,1,2,
则 i=1,j=1,如果x[1]<x[0],
则第一轮排序结果3,4,5,1,2
      第二轮排序结果3,4,5,1,2
      第三轮排序结果1,3,4,5,2
      第四轮排序结果1, 2,3, 4, 5

最后是希尔排序,代码:

//希尔排序
public static int [] shell(int[] x){
//分组
for(int gap=x.length/2;gap>0;gap/=2){

for(int i=gap;i<x.length;i++){
int temp =x[i];
int j=0;
for (j=i; j>=gap; j-=gap){
if(temp<x[j-gap]){
x[j]=x[j-gap];
}else{
break;
}

}
x[j]=temp;
}

}

return x;
}
}
它的意思是先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录

放在同一个组中。先在各组内进行直接插人排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的

增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止。   该方法实质上是一种分组插入方法。
示例如下图





0
5
分享到:
评论
2 楼 旭冬冬 2012-07-11  
还有几种排序没写吧?
1 楼 叶紫夜子 2012-07-09  

相关推荐

    常见排序方法总结(c版)

    堆排序是基于二叉堆的排序方法。在给定的代码中,`heapsort()`函数展示了如何构建和维护一个最大堆,然后通过交换堆顶元素和末尾元素,以及重新调整堆来实现排序。堆排序的过程包括两个阶段:建立堆和堆调整。`sift...

    java集合排序方法总结共13页.pdf.zip

    本篇总结主要围绕Java集合的排序方法进行详细阐述,共计13页,涵盖了多种排序策略和技术。下面我们将深入探讨这些关键知识点。 1. 集合接口与实现 在Java中,集合主要分为两种类型:List和Set。List接口(如...

    数据结构排序方法总结.docx

    这篇文档总结了五种主要的内部排序方法,包括插入类排序、交换类排序、选择类排序、归并排序和分配类排序。在这篇文章中,我们将详细探讨插入类排序,因为它是最基础且易于理解的排序技术之一。 插入类排序的核心...

    数据结构排序方法总结.pdf

    这种排序方法是稳定的,即相同元素的相对顺序在排序后不会改变。直接插入排序的时间复杂度在最坏的情况下为O(n^2),但当数据接近有序时,性能接近线性O(n)。 希尔排序,又称Shell排序,是由Donald Shell于1959年...

    C语言常用的三种排序方法总结与探讨

    本文将详细讨论并比较三种常见的排序方法:交换排序法、插入排序法和选择排序法。 **交换排序法**,其中最典型的就是冒泡排序和快速排序。冒泡排序通过不断交换相邻的错误顺序元素来实现排序,其核心思想是每次遍历...

    数据结构排序方法总结借鉴.pdf

    主要的排序方法可以归纳为五类:插入类排序、交换类排序、选择类排序、归并排序和分配类排序。这些方法各有特点,适用于不同的场景和数据类型。 **插入类排序**的基本思路是在已排序的部分序列中,逐个将未排序的...

    排序方法总结

    根据给定的信息,本文将对几种常见的排序方法进行详细的总结与解析,并且提供相应的C语言实现代码。排序作为计算机科学中的基本操作之一,在各种应用场景中都占有极其重要的地位。通过对比不同排序算法的时间复杂度...

    js代码-常用排序方法总结

    本资料集“js代码-常用排序方法总结”旨在全面介绍JavaScript中的各种排序算法,帮助开发者更好地理解和运用这些方法。 首先,最基本的排序方法是`Array.prototype.sort()`。这个内置函数可以接受一个比较函数作为...

    总结各类排序方法

    总结各类排序方法。排序问题一直是计算机技术研究的重要问题,排序算法的好坏直接影响程序的执行速度和辅助存储空间的占有量。此代码将详细分析常见的各种排序算法,并从时间复杂度、空间复杂度、适用情况等多个方面...

    C#排序算法总结

    直接插入排序是最简单的插入排序方法,其基本思想是把待排序的记录插入到已排好序的有序表中,从而得到一个新的、记录数增加1的有序表。 直接插入排序的C#实现代码如下: ```csharp public static void InsertSort...

    五中内部排序算法的比较

    对冒泡排序,直接插入排序,简单选择排序,快速排序,希尔排序,堆排序这六种常用的内排序方法的掌握,通过对各种排序算法的分析,对其关键字的比较次数和移动次数进行分析,运用数据结构所学的知识将其用程序实现。

    字符串排序方法

    ### 字符串排序方法 在JavaScript以及其他的编程语言中,字符串排序是一个常见的需求。无论是对字符串数组进行排序还是对特定的字符串内部字符进行排序,掌握正确的排序方法对于开发者来说至关重要。 #### 标题:...

    八大排序方法和总结

    在本文中,我们将详细介绍八大排序方法,包括直接插入排序、希尔排序、简单选择排序、堆排序、冒泡排序、快速排序、归并排序和基数排序。 1. 直接插入排序 直接插入排序是一种简单的排序算法,其基本思想是将一个...

    排序算法总结.doc

    排序算法是计算机科学中的基础概念,用于组织和整理数据,使其按照特定顺序排列。以下是对几种常见排序算法的详细说明: 1. 插入排序: ...理解这些算法的优缺点可以帮助我们选择最适合特定情境的排序方法。

    java各种排序算法总结

    排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。一个优秀的算法可以节省大量的资源。在各个领域中考虑到数据的各种限制和规范,要得到一个符合实际...

    PHP 数组排序方法总结 推荐收藏

    以下是对PHP数组排序方法的详细说明: 1. **sort()**:这个函数对数组进行升序排序,会删除原有的键名并为数组元素赋予新的键名。...记得在处理数组时,根据实际需求选择相应的排序方法,确保数据按照预期的方式排列。

    排序算法总结和比较

    本文主要总结和比较了九种常见的排序算法:快速排序、归并排序、堆排序、Shell排序、插入排序、冒泡排序、交换排序、选择排序以及基数排序。 1. **快速排序**:快速排序是一种基于分治思想的高效排序算法,由C.A.R....

Global site tag (gtag.js) - Google Analytics