基本排序——冒泡

引用某人的话:算法是区别码农与软件工程师的依据,编程从来都是脑力工作,只是多数人把它干成了体力活。算法提供的是一种思路,一种思维方式,实现同样的功能,有人能用几行代码你却要用几十行代码,为什么别人的程序代码量少、运行效率高且bug少,你的代码杂乱无章、效率越来越差、bug不好找。

虽然复习了几次冒泡排序,但是过一段时间后又忘记了,还是因为没有真正理解到算法的思想,今天独立实现了冒泡排序,用自己的语言记录下来,加深自己的理解。

题目:有一个int类型的数组,需要你将数组从小到大进行排序

思考过程:

1、先写一个五个元素的数组,自己手动排序,分析一下思路;

(编程不是一行一行往下写的,先把思路理出来了,把大的框架(逻辑)写出来,然后填空,重要的不是用什么语言,只要能写出关键逻辑就是高手,这就是有开发经验与实习生的区别);

2、开始编码

 1 public class OrderNum {
 2     public static void main(String[] args) {
 3         // TODO Auto-generated method stub
 4         int[] data = {3,2,8,0,4,5,1,9,6,7};
 5         for(int m=data.length-1 ;m>0 ;m--){
 6             for(int n=0;n<m;n++){ //这里n的边界用m做判断,因为没经过一轮外循环,最大的数已经确定下来,就不用再进行比较了;如果用n<data.length还会越界
 7                 if(data[n]>data[n+1]){
 8                     int temp = data[n+1];
 9                     data[n+1] = data[n];
10                     data[n] = temp;
11                 }
12             }
13         }
14         for(int i : data){
15             System.out.print(i+"   ");
16         }
17
18     }
19 }

输出:

时间: 2024-11-06 11:35:51

基本排序——冒泡的相关文章

python 数据结构与算法之排序(冒泡,选择,插入)

目录 数据结构与算法之排序(冒泡,选择,插入) 为什么学习数据结构与算法: 数据结构与算法: 算法: 数据结构 冒泡排序法 选择排序法 插入排序法 数据结构与算法之排序(冒泡,选择,插入) 为什么学习数据结构与算法: 计算机重要的几门课: 1.数据结构和算法 2.网络 3.操作系统 4.计算组成原理 数据结构与算法: 算法: 衡量算法的标准: 时间复杂度:就是程序代码执行的大概次数 小结: 时间复杂度是用来估计算法运行时间的一个式子(单位) 一般来说,时间复杂度高的算法比复杂度低的算法慢 常见的

Java数据结构与算法(2) - 排序(冒泡、插入和选择排序)

排序需要掌握的有冒泡排序,插入排序和选择排序. 冒泡排序: 外层循环从后往前,内存循环从前往后到外层循环,相邻数组项两两比较,将较大的值后移. 插入排序: 从排序过程的中间开始(程序从第二个数组项开始a[1]),此时队列已经拍好了一部分.此时,将后边的数组项一次插入到已经排好序的部分队列中. 选择排序: 从第一个数组项开始,找到包括该数组项在内的所有往后数组项中的最小项与当前项进行交换,其实相当于依次将最小值往前冒泡. 示例代码: package chap03.BubbleSort; // bu

php 常用四种排序 冒泡,选择,插入,快排

---恢复内容开始--- 1冒泡排序.  [为描述方便,例子全面为升序排列] 简述:假设数组有10个数字,从左向右.依次比较,如果前者大于后者,则两两交换.每一轮将冒泡一个最大数出来,依次循环,完成排序 流程描述:-- 第一次  a[0] 与 a[1]  比如果 a[0] > a[1]  则 a[0] 与 a[1] 交换,然后 a[1] 与 a[2] 交换,依次到  a[8] 与 a[9]  交换.  此轮过后  a[9] 必为  a[0-9]  中的最大值. 第二次(此时 a[9]以是最大值)

python排序(冒泡、直接选择、直接插入等)

冒泡排序 冒泡法:第一趟:相邻的两数相比,大的往下沉.最后一个元素是最大的. 第二趟:相邻的两数相比,大的往下沉.最后一个元素不用比. 1 #冒泡排序 2 array = [1,5,6,2,9,4,3] 3 def bubble_sort(array): 4 for i in range(len(array)-1): 5 for j in range(len(array)-i-1): 6 if array[j] > array[j+1]: 7 array[j],array[j+1] = arra

排序(冒泡)

一.冒泡排序 冒泡排序(Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端. 冒泡排序算法的运作如下: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 针对所有的元

java面试准备之基础排序——冒泡与选择排序

选择排序: public void select(int[] arr){ for(int i=0;i<arr.length;i++){ for(int j=i+1;j<arr.length;j++){ if(arr[j]>arr[i]){ int one = arr[i]; arr[i]=arr[j]; arr[j]=one; } } } } 冒泡排序: public static int[] popo(int[] arr){ for(int i=0;i<arr.length-1;

排序 - 冒泡法(改进)

排序过程: 将第一个记录的关键字与第二个记录的关键字进行比较,若为逆序r[1].key > r[2].key,则交换:然后比较第二个记录与第三个记录:依次类推,直至第n - 1个记录和第n个记录比较为止,第一趟冒泡排序,结果关键字最大的记录被安置在最后一个记录上. 对前n - 1个记录进行第二趟冒泡排序,结果使关键字次大的记录被安置在第n - 1个记录位置. 重复上述过程,直到"在一趟排序过程中没有进行过交换记录的操作"为止. 时间复杂度O(n^2) 简单版: #include

排序-冒泡,归并,快排区别

快排: #include <iostream> #include <string.h> #include <stdio.h> #include <cmath> using namespace std; void Q_Sort(int a[],int low,int high) { if(low >= high) return; int first = low; int last = high; int key = a[first]; while(fir

JAVA排序(冒泡,直接选择,反转)

int[] arr = {45, 34, 53, 43}; 一,直接选择排序 System.out.println(Arrays.toString(arr)); for(int i=0;i<arr.length;i++) { int tem = i; for(int j=i;j<arr.length;j++) { if(arr[j] < arr[tem]) { tem = j; } } int temp1 = arr[i]; arr[i] = arr[tem]; arr[tem] = t

数据结构学习笔记06排序 (冒泡、插入、希尔)

前提void X_Sort ( ElementType A[], int N ) 大多数情况下,为简单起见,讨论从小大的整数排序 N是正整数 只讨论基于比较的排序(> = < 有定义) 只讨论内部排序 稳定性:任意两个相等的数据,排序前后的相对位置不发生改变 1.冒泡排序 (从小到大排序) 物理意义:大泡泡往下沉,小泡泡往上冒 每次比较相邻两个泡泡,符合条件,交换位置,每一轮比较完,最大的泡泡沉到最底下. 最好情况:顺序T = O( N )最坏情况:逆序T = O( N^2 ) 稳定 1 #i