冒泡排序与选择排序(经典版)----java基础总结

前言:关于冒泡排序和选择排序,每次写的时候都要再看看他们的概念,这次,就自己写明白

1.冒泡排序:

其实冒泡排序应该用例子证明,设数组长度为N。

1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。

2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。

3.N=N-1,如果N不为0就重复前面二步,否则排序完成。

看了基本的方法,就写个代码验证下

 1 // 2.冒泡排序
 2         @Test
 3         public void test2() {
 4             int[] arr={14,9,8,15,34,5};
 5             int temp=0;
 6             for(int i=0;i<arr.length;i++){
 7                 for(int j=0;j<arr.length-1;j++){
 8                     if(arr[j]>arr[j+1]){
 9                         temp=arr[j];
10                         arr[j]=arr[j+1];
11                         arr[j+1]=temp;
12                     }
13                 }
14             }
15
16             //遍历输出有三种输出方式,可以参考我博客的3中遍历输出的方式
17             for(int a:arr){
18                 System.out.println(a);
19             }
20         }

运行效果:

2.选择排序:

思想:先在所有序列中先找到最小的,然后放到第一个位置。之后再看剩余元素中最小的,放到第二个位置……以此类推,就可以完成整个的排序工作了。

代码:

 1 @Test
 2     public void test4() {
 3         int[] arr = { 14, 9, 8, 90, 34, 5,78 };
 4         int minIndex;
 5         int temp;
 6         for (int i = 0; i < arr.length-1; i++) {
 7             minIndex=i;
 8             for (int j = i + 1; j < arr.length; j++) {
 9                 if (arr[j] < arr[minIndex]) {
10                     minIndex =j;
11                 }
12             }
13             if(minIndex!=i){
14                 temp=arr[i];
15                 arr[i]=arr[minIndex];
16                 arr[minIndex]=temp;
17             }
18         }
19         for (int i : arr) {
20             System.out.println(i);
21         }
22
23     }

运行效果:

时间: 2024-08-04 03:34:31

冒泡排序与选择排序(经典版)----java基础总结的相关文章

java基础(16)、数组的高级应用--冒泡排序、选择排序

数组排序 目录 一. 冒泡排序 二. 选择排序 三. 优化选择排序 一. 冒泡排序 将数组元素按[从小到大排序]为例 思路:依次对临近的两个元素对比,将最大值放在数组最后:再将剩余的元素对比,大值放在剩余元素的最后. . . 以此循环,最后元素就是按从小到大排列. 1.1. 做之前,先了解这个操作:把数组的最大值放在末尾 将元素1和元素2对比,如果元素1的值大,则元素2和元素1的值互换(此时元素2为大值):再让元素2和元素3对比.  . ( 保留大值).  .  元素3和元素4对比 .  . 

java面向对象的冒泡排序,选择排序和插入排序的比较

这三种排序有俩个过程: 1.比较俩个数据. 2.交换俩个数据或复制其中一项. 这三种排序的时间级别 冒泡排序:比较 (N-1)+(N-2)+...+2+1 = N*(N-1)/2=N2/2 交换  0——N2/2 = N2/4 总时间 3/4*N2 选择排序:比较 (N-1)+(N-2)+...+2+1 = N*(N-1)/2=N2/2 交换  0——3*(N-1)=3*(N-1)/2=3/2*N 总时间 N2/2+3/2*N 插入排序:第一轮最多比较一次,第二轮最多比较俩次,最后一轮比较N-1

Java排序算法分析与实现:快排、冒泡排序、选择排序、插入排序、归并排序(二)

一.概述: 上篇博客介绍了常见简单算法:冒泡排序.选择排序和插入排序.本文介绍高级排序算法:快速排序和归并排序.在开始介绍算法之前,首先介绍高级算法所需要的基础知识:划分.递归,并顺带介绍二分查找算法. 二.划分: 划分是快速排序的前提,即把数据分为两组,大于特定值的数据在一组,小于特定值的数据在另一组.快速排序即是由划分和递归操作来完成的. (1)原理: 定义一个阈值,分别从最左面和最右面向中间遍历元素,左面找到一个大于阈值的数据便停止,右边找到一个小于阈值的数据便停止,如果此时左右两边都还没

冒泡排序和选择排序--Java

冒泡排序(Bubble sort)和选择排序(Selection sort) 初看冒泡排序和选择排序不禁会问它们有什么区别? 的确, 它们的基本思想是一样的. 都是通过一轮的循环找到所要排序数中的最值(最大值或最小值), 然后将最值置于顶端. 它们的区别主要体现在对其他数(非最值)的处理上. 冒泡排序: 通过相邻的两个数的比较, 根据需要决定是否将两个数互换位置, 然后将比较往前(或往后)推进. 例如, 要求从小到大排序. 通过将两个数比较, 将较大的数置换到右边. 如此不断循环将得到最值. 选

黑马程序员——冒泡排序和选择排序——熟悉又陌生的排序方法

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 昨天做基础测试题,遇到了个排序问题,写完后脑子里突然跳出了“冒泡排序法”这个名词.“冒泡排序法”和“选择排序法”是每个程序初学者都会学到的两个排序方法,但是好多人对这两个排序方法是既熟悉又陌生,熟悉是因为凡是遇到排序一般都会想到这两个方法,陌生是因为细细一想对这两个方法的原理和区别又不是很清楚.不较真还好,初学者一较真就很容易被这两个方法搞晕了,我当时也被这两个方法搞晕了,就又认认真真一步一步

经典的Java基础面试题集锦

经典的Java基础面试题集锦,欢迎收藏和分享 一.面向对象编程(OOP) Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可靠性和灵活性. 增加代码的可理解性. 面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象.下面的章节我们会逐个分析这些特性. 封装 封装给对象提供了隐藏内部特性和行为的能力.对象提供一些能被其他对象访问的方法来改变它内部的数据.在Java当中,有3种修饰符:publ

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

冒泡排序.选择排序与插入排序复杂度都是指数级别的,放在一起说吧. 介绍一些学习这三个排序方法的比较好的资料.冒泡排序看<学习JavaScript数据结构与算法>介绍的冒泡排序,选择排序看<计算机科学概论(第三版)>里介绍的选择排序,插入排序看<计算机科学概论(第11版)>里介绍的插入排序, 通过这三份资料弄明白实现原理之后,最后看<学习JavaScript数据结构与算法>一书里的JS实现代码. 嗯,这本书里都有现成代码,就不在这儿写了,关键是弄清楚原理,然后

ObjC语法练习 冒泡排序、选择排序、矩阵相乘

用OC实现的冒泡排序.选择排序.矩阵相乘,纯粹是用来练习语法. 冒泡排序,程序如下: void bubbleSort() { //初始化数组 NSMutableArray *array1 = [[NSMutableArray alloc] initWithCapacity:8]; [array1 addObject:@"5"]; [array1 addObject:@"10"]; [array1 addObject:@"8"]; [array1

#排序算法#【1】概述、冒泡排序、选择排序

排序算法分类: 内部排序(在排序过程中不需要访问外存就可以完成排序) 外部排序 内部排序分类: 交换排序 冒泡排序 快速排序 选择排序 直接选择排序 堆排序 插入排序 直接插入排序 希尔排序 合并排序 外部排序: 常见的是多路归并算法,即将原文件分为多个能够一次装入内存一部分,分别把每一部分调入内存完成排序,然后对已经排序的子文件进行归并排序 冒泡排序法: 冒泡排序法是一种相邻数据交换的排序方法. 冒泡排序法的基本思想是:对待排序记录关键字从后往前(逆序)进行多遍扫描,当发现相邻两个关键字的次序