冒泡排序
该排序通过将数组嵌套循环,
将相邻的两个对象进行比较,正序排序为例,如果a[0]的对象大于a[1]的对象,
则将两个对象位置交换,将小的对象置前,直到数组结束,排序的过程中每次循环时,指针始终
指向是当前最大的对象,将次对象与后面的对象相比较,当小于后一位对象时,置换,指针依然指向
当前最大的对象。当一次循环结束时,已将最大的对象移至
数组尾部。以此类推完成排序。
class Sort{
private long[] a;
private int nElement;
public Sort(long[] array){
this.a = array;
}
public static void main(String[] args) {
long[] array = new long[]{5,3,1,7,9,2,0};
Sort b = new Sort(array);
b.bubbleSort();
System.out.println(b);
}
public void bubbleSort(){
int out,in;
int step = 0;
System.out.println("bubble---");
for(out = a.length -1 ; out > 0; out --){
for(in = 0; in < out; in++){
if(a[in+1] < a[in]){
long temp = a[in];
a[in] = a[in+1];
a[in+1] = temp;
step++;
}
}
}
System.out.println(step);
}
public String toString(){
StringBuilder b = new StringBuilder();
for(long l : a){
b.append(l);
b.append(",");
}
return b.toString();
}
}
例:
对数组 {5,3,1,7,9,2,0} 进行排序 a[0] > a[1]
loop1:3,5,1,7,9,2,0, 将前两个对象比较,a[0] 和 a[1] 位置对换,此时数组的指针a[1]
loop2: 3,1,5,7,9,2,0, 进行比较,a[1] > a[2] 继续将大对象置后。
loop3: 3,1,5,7,9,2,0, 第三次比较,a[2] < a[3] 位置没有调换,指针继续向后移,依然指向当前最大的对象。
loop4 3,1,5,7,9,2,0,
loop5: 3,1,5,7,2,9,0,
loop6: 3,1,5,7,2,0,9, 第一轮循环结束,最大的对象已经移至最后一位,
此数组用了 21 次比较 (N*(N-1)/2) 完成 排序,置换操作13次。
内层每循环一次,指针都向后移动一位,当前后两个对象大小不符条件时,发生对换,
指针始终指向的是当前最大的对象。
(注意,内层循环终止位置 应该截止到已完成排序的位置。)
分享到:
相关推荐
交换排序之冒泡排序.cpp
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至...
7-5 冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡法排序之过程冒泡...
java List 排序之冒泡排序实例代码 Java List 排序之冒泡排序实例代码是 Java 语言中实现 List 排序的一种方法。该方法主要使用冒泡排序算法对 List 集合中的元素进行排序。 1.Collections.sort() 排序 ...
js冒泡排序js冒泡排序js冒泡排序js冒泡排序js冒泡排序js冒泡排序js冒泡排序js冒泡排序js冒泡排序js冒泡排序js冒泡排序js冒泡排序js冒泡排序js冒泡排序js冒泡排序js冒泡排序js冒泡排序js冒泡排序js冒泡排序js冒泡排序...
本文将详细讲解六种经典的排序算法——合并排序、插入排序、希尔排序、快速排序、冒泡排序以及桶排序,并结合提供的文件名(sort.c、set.c、main.c、set.h、sort.h)推测出每个文件可能包含的代码实现。 1. **合并...
C语言 冒泡法排序 C语言 冒泡法排序 C语言 冒泡法排序 C语言 冒泡法排序 C语言 冒泡法排序 C语言 冒泡法排序
数据结构(c语言版)严蔚敏 吴伟民编著 中直接插入排序、折半排序、shell排序、冒泡排序、快速排序、选择排序、堆排序的实现、归并排序,使用c语言实现
直接插入排序 选择排序 堆排序 归并排序 快速排序 冒泡排序等七种排序方法
选择排序、插入排序、冒泡排序以及快速排序和归并排序的C语言实现,绝对可用
冒泡排序是最简单的排序算法之一,它通过重复遍历待排序的列表,比较相邻元素并交换位置,直到没有任何一对数字需要比较。C++实现冒泡排序如下: ```cpp void bubbleSort(int arr[], int n) { for (int i = 0; i ;...
本文将深入探讨四种在C++中实现的常见排序算法:插入排序、冒泡排序、堆排序和快速排序。这些算法各有特点,适用于不同的场景,理解并掌握它们对于提升编程能力至关重要。 1. **插入排序**: 插入排序是一种简单的...
本主题将详细探讨希尔排序、冒泡排序、堆排序等经典的排序算法,这些都是数据结构与算法学习中的核心内容,尤其对于北邮数据结构课程来说,理解并掌握这些排序方法至关重要。 1. **插入排序**: 插入排序是一种...
交换排序 选择排序 冒泡排序 插入排序
本文将深入探讨Java编程语言中实现的七种主要排序算法:直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序以及归并排序。每种算法都有其独特性,适用于不同的场景和数据特性。 1. **直接插入排序**:...
2. 冒泡排序:是最简单的排序算法之一,通过不断交换相邻位置的元素来逐渐达到排序的目的。每一轮遍历都能确保最大(或最小)的元素被放置到正确的位置,重复这个过程直到整个数组排序完成。 3. 选择排序:每次从未...
根据给定的文件信息,我们将深入探讨几种经典的排序算法,包括选择排序、冒泡排序、交换排序、希尔排序、插入排序以及基数排序。这些算法在计算机科学领域内有着广泛的应用,各自具有独特的特点和适用场景。 ### 1....
冒泡排序是最简单的排序算法之一,通过比较相邻元素并交换位置来实现排序。每一轮遍历会确保最大的元素“冒”到数组的末尾。这个过程会重复,直到所有元素都排好序。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1...
本文将详细讨论三种基础的排序算法:选择排序、插入排序和冒泡排序。这些算法虽然简单,但在理解计算机如何执行排序操作方面起着至关重要的作用。 首先,我们来看**选择排序**(Selection Sort)。它的工作原理是...
插入排序、冒泡排序、归并排序、快速排序四种排序方式的C++实现,各写成了一个函数,主函数中可以选择调用那一个。初始化数组时用的是随机种子srand((int)time(0))。在宏中定义数组大小。