`
songzhan
  • 浏览: 240335 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

4月26 -- 排序算法

阅读更多

今天的任务:简单的学习了  冒泡排序算法、选择排序算法

 

一、冒泡排序算法的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排public class MaoPaoSort {

    public static void main(String[] args){
        int arr[] = {3,2,5,8,9,10,1,4};
        int temp;
        // 从此一个位开始循环数组
        for (int i = 0; i < arr.length-1; i++) {
            // 从第i+1为开始循环数组
            for (int j = i+1; j < arr.length; j++) {
                // 如果前一位比后一位小,那么就将两个数字调换
                // 这里是按降序排列
                // 如果你想按升序排列只要改变符号即可
                if (arr[i]>arr[j]) {
                    temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }

            }
            System.out.print(arr[i]);
        }
        System.out.print("冒泡排序:");
        for(int i = 0;i<arr.length;i++)
        {
            System.out.print(arr[i] + " ");
        }
    }
}

 运行结果 : 

选择排序:1 2 3 4 5 8 9 10 

 

 

二、选择排序算法:搜索整个值列,以找到最小值。将该值与值列中第一个位置上的值进行交换。搜索剩下的值列(第一个除外),以找到其中的最小值,然后将其与值列中第二个位置上的值进行交换。对值列中的每个位置重复该过程。在算法结束时,就完成了对值列的排序。

 

public class SelectionScor{
        public static void main(String[] args){
        int arr[] = {3,2,5,8,9,10,1,4};
        int temp;
/*
 * 循环整个数组(其实这里的上界为 arr.length - 1 即可,因为当 i= array.length-1
 * 时,最后一个元素就已是最大的了,如果为array.length时,内层循环将不再循环),每轮假设
 * 第一个元素为最小元素,如果从第一元素后能选出比第一个元素更小元素,则让让最小元素与第一 个元素交换
 */
            for (int i = 0; i < arr.length; i++) {
                int lowIndex = i;// 假设每轮第一个元素为最小元素
                for (int j = i + 1; j < arr.length; j++) {
//    如果发现有比当前array[lowIndex]更小元素,则记下该元素的索引
                    if (arr[j] < arr[lowIndex]) {
                        lowIndex = j;
                    }
                }
                //交换位置
                temp = arr[i];
                arr[i] = arr[lowIndex];
                arr[lowIndex] = temp;
            }
            System.out.print("选择排序:");
            for(int i=0;i<arr.length;i++){
                System.out.print( arr[i] + " ");
            }
        }
}

 运行结果 : 

选择排序:1 2 3 4 5 8 9 10 

 

 

 

分享到:
评论

相关推荐

    数据结构C语言课设-《内部排序算法比较》

    数据结构课设《内部排序算法比较》课程设计报告

    算法导论-麻省理工(中文)

    《算法导论》原书名——《Introduction to Algorithms》,是一本十分经典的计算机算法书籍,与高德纳(Donald E.Knuth)的《计算机程序设计艺术》(《The Art Of Computer Programming》)相媲美。 《算法导论》由...

    全面的算法代码库

      本次README修订为算法仓库Algorithms的第100次commit,首先我们庆祝自2016年8月4日本仓库建立以来Dev-XYS在算法学习方面取得的显著进步!   这里有各种算法的C++代码,任何人可以在自己的任何程序中使用,...

    中科大算法导论实验源码和报告

    问题描述:实现合并排序,插入排序,希尔排序,快速排序,冒泡排序,桶排序算法 实验要求: A. 在随机产生的空间大小分别为 N = 10, 1000,10000,100000 的排序样本(取值为[0,1])上测试以上算法。 B.结果...

    算法 第4版.pdf

    全面论述排序、搜索、图处理和字符串处理的算法和数据结构,涵盖每位程序员应知应会的50种算法  全新修订的代码 全新的Java实现代码,采用模块化的编程风格,所有代码均可供读者使用  与实际应用相结合 在...

    CS-261-Assignment-1:各种排序算法的示例

    CS-261-Assignment-1 ...作业说明:这项作业是为了对algorihms类进行分析,因此,按预期,第一个作业是对4种不同的排序算法(例如合并排序和冒泡排序)进行最终化。 用c编写的4种不同的排序程序。 程序示例运行:

    常用算法代码

    | BM 算法的改进的算法 SUNDAY ALGORITHM 32 | 最短公共祖先(两个长字符串) 33 | 最短公共祖先(多个短字符串) 33 Geometry 计算几何 34 | GRAHAM 求凸包 O(N * LOGN) 34 | 判断线段相交 34 | 求多边形...

    《C算法》((美国)Robert Sedgewick)清晰版[DJVU] 第一卷

    )按章节顺序分别讨论了基本排序方法(如选择排序、插入排序、冒泡排序、希尔排序等)、快速排序方 法,归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊目的排序方法,并比较了各种 排序方法的...

    《C算法》((美国)Robert Sedgewick)清晰版[DJVU] 第二卷

    )按章节顺序分别讨论了基本排序方法(如选择排序、插入排序、冒泡排序、希尔排序等)、快速排序方 法,归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊目的排序方法,并比较了各种 排序方法的...

    十五个经典算法研究与总结、目录+索引(定稿版)

    十二、快速排序算法 (快速排序算法3篇文章) 十二(续)、快速排序算法的深入分析 十二(再续):快速排序算法之所有版本的c/c++实现 十三、通过浙大上机复试试题学SPFA 算法 十四、快速选择SELECT算法的深入分析与...

    数据结构与算法分析_Java语言描述(第2版)

    7.3 一些简单排序算法的下界 7.4 希尔排序 7.5 堆排序 7.6 归并排序 7.7 快速排序 7.7.1 选取枢纽元 7.7.2 分割策略 7.7.3 小数组 7.7.4 实际的快速排序例程 7.7.5 快速排序的分析 7.7.6 选择问题的线性期望时间算法...

    Visual C++ 常用数值算法集

    出版日期:2002年7月 ISBN:703010498 序 前言 第1章 线性代数方程组的解法 1.1全主元高斯-约当(Gauss-Jordan)消去法 1.2LU分解法 1.3追赶法 1.4五对角线性方程组解法 1.5线性方程组解的迭代改善 1.6范德蒙...

    leetcode下载-JavaArithmetic:Java练习算法代码(排序,数据结构,小算法练习题)

    一、sort文件夹是排序算法 八大排序算法 冒泡排序 选择排序 插入排序 归并排序 快速排序 基数排序(桶排序) 希尔排序 堆排序 三、basic文件夹是基础相关 Java简单的算法题,目前有20道 递归知识~ 四、datastructure ...

    SuperNotepad

    11) 排序 12) 填充序列数 (注:支持批量\par\tab\asc\nul) 13) 字符/串拆分、合并、翻转 14) 定位匹配括号 15) 多种右键菜单 (注:鼠标中键或Shift/Alt/Ctrl+鼠标右键) 16) 便捷时间显示 ...

    数据结构与算法分析_Java语言描述(第2版)]

    排序7.1 预备知识7.2 插入排序7.2.1 算法7.2.2 插入排序的分析7.3 一些...排序算法的一般下界7.9 桶式排序7.10 外部排序7.10.1 为什么需要一些新的算法7.10.2 外部排序模型7.10.3 简单算法7.10.4 多路合并7.10.5 多相...

    严蔚敏_数据结构(C语言版)

    其内容和章节编排与1992年4月出版的《数据结构》(第二版)基本一致,但在本书中更突出了抽象数据类型的概念。全书采用类C语言作为数据结构和算法的描述语言。本书概念表述严谨,逻辑推理严密,语言精炼,用词达意。...

    C++实现基数排序的方法详解

    基数排序(Radix sort)是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于...

    零基础征服数据结构算法Python版2023

    分享一套python版的数据结构算法的视频教程——《零基础征服数据结构算法Python版》,2023年4月完结新课,提供配套的代码和课件下载! 《零基础征服数据结构算法Python版》课程以985院校为授课标准,结合大厂面试所...

    数据结构与算法分析 Java语言描述第2版

    排序7.1 预备知识7.2 插入排序7.2.1 算法7.2.2 插入排序的分析7.3 一些...排序算法的一般下界7.9 桶式排序7.10 外部排序7.10.1 为什么需要一些新的算法7.10.2 外部排序模型7.10.3 简单算法7.10.4 多路合并7.10.5 多相...

Global site tag (gtag.js) - Google Analytics