排序算法之冒泡法


package chap02_Basic_Algorithms;

import static org.junit.Assert.*;

import java.util.Arrays;

import org.junit.Test;

public class SortAlgorithms {
/**
* 冒泡法排序
*
* @param n
*/
static void bubbleSort(int[] n) {
int j = n.length - 1;
int i;
int tmp;
while (j > 0) {
i = 0;
while (i < j) {
if (n[i] > n[j]) {
tmp = n[i];
n[i] = n[j];
n[j] = tmp;
}
i++;
}
j--;
}
}
}

排序算法之冒泡法,布布扣,bubuko.com

时间: 2024-12-14 18:05:17

排序算法之冒泡法的相关文章

排序算法:冒泡法

冒泡排序:n个数,经过n-1趟子排序完成的,第 i 趟子排序从第1个数至第 n-i 个数,若第i个数比后一个数大(则升序,小则降序)则交换两数. 1.比较相邻两个数,如果前面数据大于(或者小于)后面的数据,两个数据交换. 2.每次遍历之后,最大(或者最小)的数“沉”到最后 3.N个数进行(n-1)回排序,第i回进行(n-i)次比较 4, 排序效率低,用于小规模排序 原始: 0 1 2 3 4 5 6 7 6 10 4 90 52 77 8 3 第0次排序后: 0 1 2 3 4 5 6 7 6

简单排序算法:冒泡法排序(Java)

冒泡排序口诀:两两比较,两两交换. 操作对象:乱序数组 操作方式:双循环以及内层循环中条件的判断 操作结果:升序或降序数组 举例: 给定一个数组:int[] arr = new int[]{99,33,21,14,65,11,9,45,22,10}; 对此数组进行升序排列. 分析:越大的数越要下沉,最大的数沉底:越小的数越要上浮,最小的数浮顶.上面数组中一共有10个数,实现这10个数的升序排列一共分两方面: 第一方面:一轮一轮(或者说一趟一趟)地从左往右遍历数组,每一轮操作之后产生一个最大数放到

11. 蛤蟆的数据结构进阶十一排序实现之冒泡法

11. 蛤蟆的数据结构进阶十一排序实现之冒泡法 本篇名言:"君子坦荡荡,小人长戚戚. --孔丘" 接下去我们来看下如何实现各种排序,先来看下冒泡法实现. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/47683113 1.  冒泡排序(Bubble Sort) 冒泡排序(BubbleSort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来

常见排序算法(冒泡、选择、插入、快速、归并C++实现)

常见排序算法(冒泡.选择.插入.快速.归并C++实现) #include <iostream> using namespace std; // 冒泡排序 void bubbleSort (int data[], size_t size) { for (size_t i = 0; i < size - 1; ++i) { bool ordered = true; for (size_t j = 0; j < size - 1 - i; ++j) if (data[j+1] <

排序算法-(冒泡、选择、插入算法)

运行效率较慢的三大排序算法:冒泡.选择与插入算法,时间复杂度都为O(n2),运行效率较慢. #python 代码实现如下所示: li=[2,1,4,5,7,8,9,5,3]#冒泡算法(升序算法)O(n2)import randomfrom cal_time import *@cal_timedef bubble_sort(li): for i in range(len(li)-1): #第i趟 exchange=False for j in range(len(li)-i-1): #无序区域为n

排序算法(交换法,选择法,插入排序,冒泡法,快速排序算法,C语言举例)

交换法:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动. 简单选择排序:的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕. 插入排序法:有一个已经有序的

Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法

Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配排序(基数排序) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳定:快速排序,希尔排序,堆排序. 先来看看 8种排序之间的关系: 1.直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2]

七大排序算法(冒泡,选择,插入,希尔,快速,合并,堆排序)的java实现

冒泡排序 思路:就是每次将最大或最小的元素放到数组的最后,so easy!时间复杂度为(O(n^2)) public class BubbleSort { public static void bubbleSort(int[] a) { for (int j = 1; j < a.length; j++) { for (int i = 0; i < a.length - j; i++) { if (a[i] > a[i + 1]) { int temp = a[i]; a[i] = a[

排序算法: 堆排序法

一,使用堆排序法之前,需要了解堆的特性: 1,堆一般都用数组的方式来存储,堆分为“最大堆”和“最小堆”: 2,以“最大堆”为例: (1)一个节点最多有两个子节点,即左右节点,每个节点都是一个堆: (2)父节点的值不小于子节点的值: (3)一个i节点,其父节点为(i-1)/2,左节点(2*i+1),右节点(2*i+2) 一个最大堆例子: 数组 int a[]: 83 78 81 48 17 27 二,将一个数组形成堆(以最大堆为例) 数组a[]: 27 48 81 78 17 83 形成最大堆思路