博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法笔记_008:选择排序和冒泡排序【蛮力法】
阅读量:6482 次
发布时间:2019-06-23

本文共 3089 字,大约阅读时间需要 10 分钟。

目录

 


1 问题描述

给定一个可排序的n元素序列(例如,数字、字符和字符串),将它们按照非降序方式重新排列。

2 解决方案

2.1 选择排序原理简介

选择排序开始的时候,我们从第一个元素开始扫描整个列表,找到它的最小元素,然后和第一个元素交换,将最小元素和第一个元素交换位置;然后,我们从第二个元素开始扫描剩下的n-1个元素,找到这n-1个元素中的最小元素,将最小元素和第二个元素交换位置;然后从第三个元素开始扫描...一般来说,就是从第i个元素开始扫描,找到第n-i+1个元素中的最小元素,将最小元素与第i个元素交换位置。这样,在进行n-1次遍历后,该列表就排好序了。

2.2 具体编码(选择排序)

package com.liuzhen.chapterThree;public class SelectionSort {        public static void getSelectionSort(int[] a){        int min = 0;     //用于存放n-i序列中最小元素序号        int temp = 0;    //交换数组元素值的中间变量        //打印输出未排序前数组序列        System.out.print("排序前:          ");        for(int p = 0;p < a.length;p++)            System.out.print(a[p]+"\t");        System.out.println();                for(int i = 0;i < a.length-1;i++){            min = i;            for(int j = i+1;j < a.length;j++){                if(a[j] < a[min])                    min = j;            }            //交换a[i]和a[min]的值            temp = a[i];            a[i] = a[min];            a[min] = temp;            //打印输出每一次选择排序结果            System.out.print("排序第"+(i+1)+"趟:");            for(int p = 0;p < a.length;p++)                System.out.print(a[p]+"\t");            System.out.println();        }    }        public static void main(String args[]){        int[] a = {89,45,68,90,29,34,17};        getSelectionSort(a);    }}

运行结果:

排序前:          89    45    68    90    29    34    17    排序第1趟:17    45    68    90    29    34    89    排序第2趟:17    29    68    90    45    34    89    排序第3趟:17    29    34    90    45    68    89    排序第4趟:17    29    34    45    90    68    89    排序第5趟:17    29    34    45    68    90    89    排序第6趟:17    29    34    45    68    89    90

 

2.3 冒泡排序原理简介

我们从列表的第一个元素开始,比较列表中相邻的两个元素,如果第一个元素大于第二元素,则交换这两个元素的位置,否则就从第二个元素位置开始重复上一步操作。重复多次以后,最大的元素就“沉到”列表的最后一个位置。这样一直做,直到n-1遍以后,该列表就排好序了。

2.4 具体编码(冒泡排序)

package com.liuzhen.chapterThree;public class BubbleSort {        public static void getBubbleSort(int[] a){        int temp;              //打印输出未排序前数组序列        System.out.print("排序前:          ");        for(int p = 0;p < a.length;p++)            System.out.print(a[p]+"\t");        System.out.println();                    for(int i = 0;i < a.length-1;i++){                        for(int j = 0;j < a.length-1-i;j++){                if(a[j+1] < a[j]){                    //交换a[j]和a[j+1]的值                    temp = a[j];                    a[j] = a[j+1];                    a[j+1] = temp;                }            }            //打印输出每一次选择排序结果            System.out.print("排序第"+(i+1)+"趟:");            for(int p = 0;p < a.length;p++)                System.out.print(a[p]+"\t");            System.out.println();        }    }        public static void main(String args[]){        int[] a = {89,45,68,90,29,34,17};        getBubbleSort(a);    }}

运行结果:

排序前:          89    45    68    90    29    34    17    排序第1趟:45    68    89    29    34    17    90    排序第2趟:45    68    29    34    17    89    90    排序第3趟:45    29    34    17    68    89    90    排序第4趟:29    34    17    45    68    89    90    排序第5趟:29    17    34    45    68    89    90    排序第6趟:17    29    34    45    68    89    90

 

转载地址:http://uofuo.baihongyu.com/

你可能感兴趣的文章
[JSOI2008]星球大战starwar BZOJ1015
查看>>
IntelliJ IDEA 注册码
查看>>
String字符串的截取
查看>>
Shell编程-环境变量配置文件
查看>>
Struts2和Spring MVC的区别
查看>>
git代码冲突
查看>>
git bash 风格调整
查看>>
HDOJ-1010 Tempter of the Bone
查看>>
日本开设无人机专业,打造无人机“人才市场”
查看>>
190行代码实现mvvm模式
查看>>
兼容几乎所有浏览器的透明背景效果
查看>>
Linux VNC server的安装及简单配置使用
查看>>
阿里宣布开源Weex ,亿级应用匠心打造跨平台移动开发工具
查看>>
Android项目——实现时间线程源码
查看>>
招商银行信用卡重要通知:消费提醒服务调整,300元以下消费不再逐笔发送短信...
查看>>
数据库运维体系_SZMSD
查看>>
js的AJAX请求有关知识总结
查看>>
三分 POJ 2420 A Star not a Tree?
查看>>
修改OBS为仅直播音频
查看>>
OCA读书笔记(3) - 使用DBCA创建Oracle数据库
查看>>