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

[转]4种排序方式附源代码

    博客分类:
  • JAVA
阅读更多

冒泡排序
public class BubbleSort {
 public  static void sort(int[] data, int n) {
  int sortedNum = 0;
  int index;
  while (sortedNum < n) {
   for (index = 1; index < n - sortedNum; index++) {
    if (data[index - 1] > data[index]) {
     int tmp;
     tmp = data[index - 1];
     data[index - 1] = data[index];
     data[index] = tmp;

    }
   }
   sortedNum++;
  }
 }

}
选择排序
public class SelectSort {
 public static void sort(int[] data, int n) {
  int sortedNum = 0;
  int index;
  int maxIndex = 0;
  while (sortedNum < n) {
   for (index = 1; index < n - sortedNum - 1; index++) {
    if (data[maxIndex] < data[index]) {
     maxIndex = index;
    }
   }
   int tmp;
   tmp = data[maxIndex];
   data[maxIndex] = data[n - sortedNum - 1];
   data[n - sortedNum - 1] = tmp;
   sortedNum++;

  }

 }

}

插入排序
public class InsertSort {
 public static void sort(int[] data, int n) {
  int sortedNum = 1;
  int index;
  while (sortedNum < n) {
   int tmp = data[sortedNum];
   for (index = sortedNum; index > 0; index--) {
    if (tmp < data[index - 1]) {
     data[index] = data[index - 1];
    } else {
     break;
    }
   }
   //插入的他的位置
   //index就是找TMP的位置
   data[index] = tmp;
   sortedNum++;
   
   for(int i=0;i<n;i++){
    System.out.print(data[i]+",";
   }
   System.out.println("";
  }

 }

}

快速排序
public class QuickSort {

 public static void sort(int[] data, int n) {
  quickSortRescursive(data, 0, n - 1);
 }

 private static void quickSortRescursive(int[] data, int left, int right) {

  int pos;
  if (left >= right)
   return;
  pos = getPos(data, left, right);
  // 排左边的
  quickSortRescursive(data, left, pos - 1);
  quickSortRescursive(data, pos + 1, right);
 }

 private static int getPos(int[] data, int left, int right) {
  // 想左边移动
  while (true) {
   //遇到右边的大就忽略,并且缩小右边范围
   while (left < right && data[left] < data[right])
    right--;
   
   //遇到左边的大就往右边换
   if (left < right)
    swap(data, left++, right);
   else
    return left;
//   遇到右边的大就忽略,并且左边缩小范围
   while (left < right && data[left] < data[right])
    left++;
   if (left < right)
    //遇到左边的大就往右边换
    swap(data, left, right--);
   // return left;

   else
    return right;
   // return 0;
  }

 }

 private static void swap(int[] data, int i, int j) {
  int tmp = data[i];
  data[i] = data[j];
  data[j] = tmp;

 }

}
分享到:
评论

相关推荐

    排序算法之计数排序源代码另附博客地址

    排序算法之计数排序,计数排序是一种线性的排序算法,比基于比较的排序算法效率高,但其应用有特定的领域。我给出了两种策略的计数排序算法,欢迎下载~~如程序中有Bug,恳请指正!

    《C#轻松入门》所附源代码

    通过本书所附的源代码,学习者可以直观地理解并实践书中讲解的各种编程技巧和实例。下面将详细阐述这些源代码中涉及的关键知识点。 1. **基础语法**:C#是一种面向对象的语言,源代码中包含了变量声明、数据类型...

    数据结构算法与应用 (附源代码)

    本资源"数据结构算法与应用 (附源代码)"提供了一套详细的学习材料,包括理论讲解和实践代码,帮助学习者深入理解并应用数据结构。 首先,我们要讨论的是基本的数据结构类型,如数组、链表、栈和队列。数组是一种...

    严蔚敏数据结构C语言版附源代码

    4. **查找与排序**:顺序查找、二分查找、哈希表、各种排序算法(冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序)。 5. **文件与外部存储**:磁盘存储管理、文件组织。 这些代码实现不仅可以帮助读者...

    八种排序方法附实现源码.zip

    int[] arr = { 3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48 }; s.bubbleSorts(arr);//冒泡排序 //s.SelectionSort(arr);//选择排序 //s.InsertionSort(arr); //插入排序 //s.ShellSort(arr); //...

    C语言上机实验报告(附源代码)

    【C语言上机实验报告(附源代码)】 在学习计算机科学的过程中,C语言作为基础且重要的编程语言,被广泛用于教学和实践。浙江工商大学的C语言上机实验是培养学生编程技能的重要环节,旨在加深对C语言语法、数据结构、...

    基于java开发的搜索引擎系统附源代码

    【标题】:“基于Java开发的搜索引擎系统附源代码”是一个以Java编程语言为基础构建的搜索引擎项目的实践案例。这个项目不仅提供了完整的源代码,而且适用于Java技术的学生或开发者作为毕业论文的研究对象,帮助他们...

    文件浏览排序工具(附源代码和可执行文件)

    4. 文件夹浏览(提供了类似windows文件管理器的前进/后退等功能) 目前尚不足: 1. 按钮使用的ico图标,变灰后很难看,没有制作变灰后的图标(或者用bmp代替) 2. 删除文件时,没有显示进度 其它: 程序中使用了MFC...

    数据结构课程设计报告(含源代码)

    通过对《数据结构课程设计报告(含源代码)》的分析,我们可以了解到该项目的核心是开发一个考场座位随机编排系统。项目涉及的数据结构知识主要包括一维数组、二维数组以及相关的排序和查找算法。通过合理的数据结构...

    停车场管理系统C语言报告附源代码

    标题 "停车场管理系统C语言报告附源代码" 涉及的核心知识主要集中在停车场管理系统的实现,特别是使用C语言编程。C语言是一种底层、高效的编程语言,常用于系统级编程和开发嵌入式软件,因此适合构建这样的系统。...

    作品:DK的《Brainiac》-附源代码.rar

    描述中提到"附源代码",这意味着我们有机会深入研究游戏背后的编程实现。源代码是软件开发的核心,它展示了程序的逻辑结构、数据处理方式以及算法设计。通过分析这些代码,开发者可以学习到游戏的架构设计、图形渲染...

    二十个C++经典程序附源代码

    在本资源中,我们收集了二十个经典的C++程序,并附带了源代码,涵盖了从小应用到小游戏的各种项目。这些程序对于学习C++语言、理解面向对象编程思想以及实际编程技巧有着极大的帮助。下面,我们将详细探讨其中涉及的...

    C常用算法程序集第二版附源代码

    《C常用算法程序集第二版附源代码》是一本针对C语言编程者深入学习算法的宝贵资源。在学习和理解算法的过程中,拥有源代码是非常有益的,因为它们提供了实际操作和调试的机会,使理论知识得以转化为实践技能。这本书...

    objective-c基础教程(附源代码)

    本书的源代码部分涵盖了上述概念的实际应用,通过阅读和实践,你可以更好地理解和掌握Objective-C的用法。例如,可能会有简单的Hello World程序,演示消息传递;类的创建和实例化,展示对象生命周期;使用协议实现...

    数据结构算法与应用-C++语言描述 附源代码.zip

    "数据结构算法与应用-C++语言描述 附源代码.zip"这个压缩包文件很可能包含了关于数据结构和算法的详细讲解,以及相关的C++实现源代码。 数据结构是组织和存储数据的方式,它决定了数据的访问和操作效率。常见的数据...

    搜索引擎 - 附源代码

    本项目提供的源代码涵盖了上述所有步骤,是学习搜索引擎开发的宝贵资源。通过阅读和调试代码,可以深入了解搜索引擎的内部机制,进一步提升编程和解决问题的能力。 总之,通过学习和实践这个Java实现的搜索引擎项目...

    Android开发的通讯录源代码附效果图(按首字母排序)

    本资源提供了一个完整的通讯录应用源代码,具有按首字母排序的功能,并附带了实际运行的效果图,对于学习和理解Android开发的通讯录功能有极大的帮助。 首先,通讯录应用的核心是数据管理。在Android中,数据通常...

    数据结构课程设计报告---几种排序算法的演示&#40;附源代第.doc

    这篇文档标题为“数据结构课程设计报告---几种排序算法的演示(附源代码.doc)”,说明这是一份关于数据结构课程的报告,重点是演示了几种不同的排序算法,并且提供了相应的源代码。从描述和标签来看,这应该是一个...

    C语言学分管理系统需求文档附源代码.doc

    C语言学分管理系统需求文档附源代码.doc 该文档是一个C语言学分管理系统的需求文档,附带了源代码。该系统的设计目录包括需求分析、总体分析、功能需求、具体需求等几个方面。 需求分析是该系统的核心部分,包括...

    java核心技术,附源代码讲解

    源代码案例是学习和理解这些概念的最好方式。通过实际编写和运行代码,初学者可以更好地理解Java的工作原理,并逐渐掌握编程技巧。对于有经验的开发者,源代码可以作为深入研究和解决问题的参考。 总的来说,"Java...

Global site tag (gtag.js) - Google Analytics