`
blueyanghualong
  • 浏览: 228543 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

冒泡排序 整理

阅读更多

 


毕业很久长时间了 ,突然发现冒泡排序都写不出来  

public class SortName {

public static void main(String[] args) {

   int[] intSort={5,76,2,33,55,11,400,555,933,10,3,5,33333333,5555,222222233};

//对一个数组进行排序

  sortToArray(intSort);

}


/**

* @param intSort  需要排序的数组

* 数组排序算法 我一直记不清楚的 for循环应执行几次

* 这个可以把握住一点 也就是 外层控制循环只是控制 跑几趟  升序/降序 皆可

* 内层控制 相邻两个数进行比较 并且 并且第一趟即可确定 最后一个数 肯定是这个数组中最大的 依次类推 

* 变能推算出 内层循环的次数与表达方式

* @since 2011-01-10

*/

private static void sortToArray(int[] intSort) {

/**

 * 冒泡排序故名就是将小数往前排 大数往后排

 * 首先比较第一个数与第二个数 如果将小的替换位置 在比较第二个与第三个数 再次替换位置 

 * 依次排序到最后 此时唯一能确定的是 最大的数 在最后一位 这样第一趟排序结束

 * 

 * 第二趟开始:

 *  首先再次比较 第一个数 与第二个数 如果大的 将依次往后推 这样只要排到倒数第二个数 即可停止

 *  倒数 第一  与第二个数已经排序成功

 * 

 * 第三趟开始 :

 * 

 * 

 */

// //外层控制跑几趟

// for (int i =intSort.length;i>0; i--) {

//    //内层控制两个数从头开始 两两比较 并换位

// for (int j = 0; j < i-1; j++) {

// //如果第一个数大于第二个 这需要换位置

// /*第二个与第三个数比较*/ 

// /*第三个与第四个数比较*/

// /*如果是5个数 第一趟应该是要比较4次  i=5 ,j=4 int[4]被排序*/ 

// /*如果是5个数 第2趟应该是要比较前4个数据即可 也就是说需要比较3次 i=4 j=3 int[3]被排序 */

// /*如果是5个数 第3趟应该是要比较前3个数据即可 也就是说需要比较2次 i=2 j=2 int[2]被排序 */

// if (intSort[j]>intSort[j+1]) {

// int temp=intSort[j+1];

// intSort[j+1]=intSort[j];

// intSort[j]=temp;

// }

// }

// }

//外层控制跑几趟

for (int i =0;i<intSort.length; i++) {

   //内层控制两个数从头开始 两两比较 并换位

for (int j = 0; j < intSort.length-1-i; j++) {

//如果第一个数大于第二个 这需要换位置

/*第二个与第三个数比较*/ 

/*第三个与第四个数比较*/

/*如果是5个数 第一趟应该是要比较4次  i=0,j=4 int[4]被排序*/ 

/*如果是5个数 第2趟应该是要比较前4个数据即可 也就是说需要比较3次 i=1 j=3 int[3]被排序 */

/*如果是5个数 第3趟应该是要比较前3个数据即可 也就是说需要比较2次 i=2 j=2 int[2]被排序 */

if (intSort[j]>intSort[j+1]) {

int temp=intSort[j+1];

intSort[j+1]=intSort[j];

intSort[j]=temp;

}

}

}

for (int i = 0; i < intSort.length; i++) {

System.out.print(intSort[i]+",");

}

}

}

 



===============================

===============================

下面看到一个 实现链表 插入 排序的代码 顺便Copy下来研究一下


 

Node head = null;

Node point = null;

Node newNode = null;

public int Count = 0;//统计值

//插入

public void AddNode(int t) {

 newNode = new Node();

 if (head == null) {

  head = newNode;

 } else {

  point = head;

  while (point.next != null) {

   point = point.next;

  }

  point.next = newNode;

 }

 point = newNode;

 point.vlaue = t;

 point.next = null;

 Count++;

}

//返回值

public int GetValue(int i) {

 if (head == null || i < 0 || i > Count)

  return -999999;

 int n;

 Node temp = null;

 point = head;

 for (n = 0; n <= i; n++) {

  temp = point;

  point = point.next;

 }

 return temp.vlaue;

}

//删除

public void DeleteNode(int i) {

 if (i < 0 || i > Count) {

  return;

 }

 if (i == 0) {

  head = head.next;

 } else {

  int n = 0;

  point = head;

  Node temp = point;

  for (n = 0; n < i; n++) {

   temp = point;

   point = point.next;

  }

  temp.next = point.next;

 }

 Count--;


}

//排序

public void Sotr() {

 for (Node i = head; i != null; i = i.next) {

  for (Node j = i.next; j != null; j = j.next) {

   if (i.vlaue > j.vlaue) {

    int t = i.vlaue;

    i.vlaue = j.vlaue;

    j.vlaue = t;

   }

  }

 }

}

}


class Node {

int vlaue;

Node next;

}

 

分享到:
评论

相关推荐

    直接插入排序 冒泡排序 快速排序 直接选择排序 堆排序 二路归并排序 C#源代码

    直接插入排序、冒泡排序、快速排序、直接选择排序、堆排序和二路归并排序是计算机科学中经典的排序算法,它们在数据处理和算法学习中占有重要地位。这些排序算法各有特点,适用场景不同,下面将逐一详细介绍,并结合...

    合并排序,插入排序,希尔排序,快速排序,冒泡排序,桶排序的C语言实现

    本文将详细讲解六种经典的排序算法——合并排序、插入排序、希尔排序、快速排序、冒泡排序以及桶排序,并结合提供的文件名(sort.c、set.c、main.c、set.h、sort.h)推测出每个文件可能包含的代码实现。 1. **合并...

    易语言文本冒泡排序

    易语言文本冒泡排序适用于处理小规模的文本数据排序,例如简单的数据分析、日志整理等。它的主要优点是实现简单,逻辑清晰,适合初学者学习编程基础。虽然冒泡排序的时间复杂度较高(O(n²)),对于大数据量排序效率...

    排序:插入排序,选择排序,基数排序,冒泡排序

    在本文中,我们将深入探讨四种经典的排序算法:插入排序、选择排序、基数排序和冒泡排序,以及它们在C++语言中的实现。 **插入排序(Insertion Sort)** 插入排序是一种简单直观的排序算法,它的工作原理类似于我们...

    冒泡排序,选择排序,插入排序,希尔排序,堆排序,归并排序,快速排序源码实现

    1. **冒泡排序**:冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成...

    希尔排序,冒泡排序,堆排序等各种排序算法

    本主题将详细探讨希尔排序、冒泡排序、堆排序等经典的排序算法,这些都是数据结构与算法学习中的核心内容,尤其对于北邮数据结构课程来说,理解并掌握这些排序方法至关重要。 1. **插入排序**: 插入排序是一种...

    用C#实现的冒泡排序和选择排序

    本篇文章将深入探讨在C#编程语言中实现冒泡排序和选择排序的方法,这两种经典的排序算法在理解和实现上都相对简单,适合初学者入门。 首先,让我们来理解冒泡排序(Bubble Sort)。冒泡排序是一种简单的排序算法,...

    冒泡排序VI

    冒泡排序是一种基础且经典的排序算法,它通过不断交换相邻元素来逐步整理一个无序的序列,直到整个序列变为有序。在"冒泡排序VI"这个项目中,我们看到使用LabVIEW这一图形化编程语言实现了冒泡排序算法,用于处理...

    排序思维导图整理,插入排序、希尔排序、冒泡排序、选择排序、快速排序、堆排序、归并排序、基数排序

    排序思维导图整理,插入排序、希尔排序、冒泡排序、选择排序、快速排序、堆排序、归并排序、基数排序,本思维导图整理了各排序方法的定义、时间复杂度、空间复杂度、稳定性,后期会整理出各排序方法对应的实现demo...

    学习排序算法之冒泡排序及其优化笔记.pdf

    通过对冒泡排序算法的学习笔记整理,我们可以了解到冒泡排序的原理,以及它的优缺点和适用场景,从而在实际的编程实践中更好地应用该算法。同时,通过不断的练习和总结,我们还能学习到如何优化排序算法,以提高程序...

    java版冒泡排序,插入排序,堆排序,快速排序,归并排序,希尔排序,桶排序

    冒泡排序是一种简单的排序算法,通过不断交换相邻两个元素的位置来逐步将较大的元素推向数组的后部。它的主要思想是重复遍历数组,每次比较相邻的元素,如果顺序错误就交换。Java实现时,通常会设置一个标志位来...

    7大排序算法实现程序(快速排序,冒泡排序,选择排序,归并排序,插入排序,希尔排序,堆排序)

    本资源提供了七大经典排序算法的实现程序,包括快速排序、冒泡排序、选择排序、归并排序、插入排序、希尔排序和堆排序。下面将逐一详细介绍这些排序算法及其原理。 1. 快速排序:由C.A.R. Hoare提出,是一种采用...

    冒泡排序等7种常见排序源代码

    本资源包含了七种常见的排序算法的源代码,包括经典的冒泡排序。接下来,我们将详细探讨这些排序算法的基本原理、实现方式以及各自的优缺点。 1. **冒泡排序**: 冒泡排序是最基础的排序算法,通过重复遍历待排序的...

    插入和冒泡排序算法Demo

    **插入排序与冒泡排序算法详解** 在计算机科学中,排序是数据处理的重要部分,它涉及到将一组数据按照特定顺序排列。插入排序和冒泡排序是两种基础且经典的排序算法,它们都属于简单排序方法,适合小规模或者部分...

    色彩渐变立方体表示 冒泡排序 插入排序 选择排序过程

    本主题将详细探讨通过色彩渐变立方体来可视化三种经典的排序算法:冒泡排序、插入排序和选择排序。 首先,让我们理解色彩渐变的概念。在本案例中,红色、绿色和蓝色的立方体代表不同的数值,颜色的深浅或明暗表示...

    CSV 数据归类(简单的冒泡排序)++

    CSV(Comma Separated ...通过简单的冒泡排序,我们可以理解排序的基本原理,并在实践中应用到CSV数据的整理和分析中。同时,随着技能的提升,可以逐步探索更高效的方法和技术,以适应更大规模和更复杂的数据处理需求。

    JAVA实现冒泡排序(交换排序)

    冒泡排序是一种基础且经典的排序算法,它通过不断交换相邻的逆序元素来逐步将一个序列整理成有序状态。在本篇文章中,我们将探讨如何使用Java语言实现冒泡排序,并结合用户输入的数据进行排序。 首先,我们需要理解...

    插入 选择 冒泡排序

    在本文中,我们将深入探讨三种基本的排序算法:插入排序、选择排序和冒泡排序。这些算法是计算机科学中基础且重要的部分,特别是在理解数据结构和算法效率方面。以下是对每种排序算法的详细说明: **插入排序...

    单片机冒泡排序

    总结来说,单片机冒泡排序是针对小型数据集的排序方法,利用C51单片机的特性,结合汇编或C语言编程,能够有效地整理RAM中的无符号整数序列。虽然效率不高,但在资源有限的嵌入式系统中,其简洁的实现方式和可靠性使...

    排序——冒泡排序,直接排序,反转排序

    这里我们将深入探讨三种常见的排序算法:冒泡排序、直接排序(也称为插入排序)以及反转排序。这些算法虽然简单,但在理解排序原理和优化算法性能方面具有重要意义。 1. 冒泡排序: 冒泡排序是最基础的排序算法之一...

Global site tag (gtag.js) - Google Analytics