`
songzhan
  • 浏览: 248843 次
  • 性别: 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语言课设-《内部排序算法比较》

    "数据结构C语言课设-《内部排序算法比较》" 本课程设计的主要目的是比较不同的内部排序算法,包括冒泡排序、直接插入排序、简单选择排序、希尔排序、快速排序、堆排序、归并排序等。这些算法的实现都基于C语言,并...

    排序和算法大全C++.rar

    《排序和算法大全C++》是一本专注于C++编程语言中的排序算法和各种算法的综合资源,旨在帮助程序员深入理解和掌握这些重要的计算技术。在这个压缩包中,包含了丰富的C++实现的各种排序算法,以及可能涉及的其他算法...

    java-排序算法总结

    在编程领域,排序算法是计算机科学中的核心概念,特别是在Java这样的高级编程语言中。排序算法是用来组织和优化数据结构的关键工具,它可以帮助我们快速查找、分析和处理大量数据。本篇将深入探讨Java中实现的几种...

    C#-多线程排序示例

    常见的排序算法有冒泡排序、插入排序、选择排序、快速排序、归并排序等。而在多线程环境中,我们可以利用多核处理器的优势,将排序任务分割到不同的线程中进行,以提高排序速度。 在C#中实现多线程排序,可以采用...

    常用排序算法的联机实验及结果分析

    文章选自《河南职技师院学报》1999年12月刊,主要目的是通过对不同排序算法进行联机实验,分析这些算法在实际运行中的性能表现,特别是关注它们的耗时情况。这对于理解各种排序算法的实际应用效果、评估算法效率以及...

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

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

    Java排序算法,常用算法集代码

    在编程领域,排序算法是计算机科学的基础之一,尤其在Java编程中,理解并掌握各种排序算法至关重要。这个压缩包文件提供了Java实现的常见排序算法,对于初学者和有经验的开发者来说,都是一个宝贵的资源。 首先,让...

    八大排序算法(手撕):冒泡排序、选择排序、插入排序、基数排序、堆排序、希尔排序、快速排序(单排)、归并排序

    在计算机科学中,排序算法是数据结构领域的重要组成部分,它涉及到如何有效地重新排列一组数据,使其按照特定的顺序(如升序或降序)排列。本文将深入探讨八大经典排序算法,尤其是插入排序。 首先,我们来理解插入...

    天文算法-许剑伟-译著

    第6章 "排序" 讨论了如何有效地组织和排序大量的天文数据,这对于数据分析和预测至关重要。 第7章 "儒略日" 详细解释了儒略日系统,这是天文学中常用的日期和时间表示方式,确保了全球同步。 第8章 "复活节日期" ...

    算法提高-蓝桥杯算法题库含VIP题目。2020/4/20日更新

    2020年4月20日的更新可能意味着题库已经包含了一些新的或者经过修订的题目,以保持其时效性和挑战性。 描述中提到"蓝桥杯算法题库的算法提高部分",这暗示了该资料集主要面向那些已经有基础算法知识,想要进一步...

    VB070-数组排序 源代码

    "VB070-数组排序 源代码"这个压缩包很可能是包含了上述排序算法的VB实现,通过学习和分析这些源代码,你可以深入理解排序算法的工作原理,并能应用于实际项目中。在编程实践中,了解和掌握不同的排序算法有助于优化...

    编程算法练习--没事的时候练练

    - **描述**:使用选择排序算法对一个数组进行排序。 - **实现思路**: - 从未排序的部分中选出最小(或最大)的元素。 - 将其放到已排序部分的末尾。 - 重复上述步骤直到所有元素都被排序。 #### 知识点二十九:...

    2015-9-虹软校招内推笔试题-算法岗

    2. 算法基础:排序(快速排序、归并排序、堆排序等)、搜索(二分查找、深度优先搜索、广度优先搜索等)。 3. 动态规划:解决最优化问题,如背包问题、最长公共子序列等。 4. 图论:最短路径算法(Dijkstra、Floyd-...

    《算法导论》原版英文课件1

    #### 四、插入排序算法 - **插入排序伪代码**: ```plaintext INSERTION-SORT(A, n) // A[1..n] 是待排序数组 for j ← 2 to n do key ← A[j] i ← j - 1 while i &gt; 0 and A[i] &gt; key do A[i + 1] ← A[i]...

    算法导论 习题答案

    通过以上分析,我们可以看出这些习题解答涵盖了排序算法的比较、日期的数学计算、基本的搜索算法及其循环不变式的验证、多项式的渐进分析等多个方面。这些知识点对于学习和理解算法设计的基础非常重要。

    全面的算法代码库

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

    算法 导论 答案 算法导论答案 算法导论 答案

    - 问题2.2-2:假设FIND-MIN算法能够在\(O(s-r)\)时间内返回数组\(A\)中索引\(r\)到\(s\)之间的最小元素的索引,则可以选择实现选择排序算法(SELECTION-SORT)。 以上是对文档中提及的关键知识点的详细解释。这些...

    数据结构课程设计综合排序

    在这个“数据结构课程设计综合排序”项目中,我们聚焦于四种重要的排序算法:希尔排序、快速排序、堆排序和归并排序。这些排序方法在实际应用中各有优势,理解和掌握它们对于提升编程技能和优化算法性能至关重要。 ...

Global site tag (gtag.js) - Google Analytics