`
宁辉522
  • 浏览: 15667 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

java语言排序——选择排序法和冒泡排序法(排序时间的测试盒比较)

    博客分类:
  • java
阅读更多

   java中主要的排序方法分为两大类:内部排序和外部排序。内部排序顾名思义就是将要排序的无序数列放到内存中去进行操作,而有一些无序数列大的惊人,内存不能放下,所以就放到外存中去进行排序这就是外部排序。
    关于排序的分类,我在网上看到了一个图片,能很清楚的表现他们的分类:




1.冒泡排序法
(1)基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

(2)程序
package com.paixu;

import java.util.Calendar;

public class maopao {

/**
* 冒泡排序法
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int len=80000;
int[] a=new int[len];
for(int i=0;i<len;i++)
{
int t=(int)(Math.random()*10000);
a[i]=t;
}

bubbleSort bub=new bubbleSort();
Calendar cal=Calendar.getInstance();
System.out.println("排序前:"+cal.getTime());
bub.Sort(a);
cal=Calendar.getInstance();
System.out.println("排序后:"+cal.getTime());



}

}
class bubbleSort
{
public void Sort(int a[])
{
    
int temp=0;     
for(int i=0;i<a.length-1;i++)
{         
for(int j=0;j<a.length-1-i;j++)
{         
if(a[j]>a[j+1])
{             
temp=a[j];             
a[j]=a[j+1];             
a[j+1]=temp;         
}         
}     
}     
/* for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+" ");
}*/
    

2.选择排序法 
(1)基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;

然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。

(2)程序
package com.paixu;

import java.util.Calendar;

public class xuanze
{

/**
*选择排序法
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
int len=80000;
int[] a=new int[len];
for(int i=0;i<len;i++)
{
int t=(int)(Math.random()*10000);
a[i]=t;
}

selectSort select=new selectSort();
Calendar cal=Calendar.getInstance();
System.out.println("排序前:"+cal.getTime());
select.sort(a);
cal=Calendar.getInstance();
System.out.println("排序后:"+cal.getTime());
}

}
class selectSort
{         
public void sort(int a[])
{
   int position=0;         
   for(int i=0;i<a.length;i++)
   {                           
    int j=i+1;             
    position=i;             
    int temp=a[i];             
    for(;j<a.length;j++)
    {             
     if(a[j]<temp)
     {                
                     temp=a[j];                
                     position=j;             
              
     }             
    }             
    a[position]=a[i];             
    a[i]=temp;         
   }        
//   for(int i=0;i<a.length;i++)             
//   System.out.print(a[i]+"  ");     
    }
}
编辑人:宁辉522
  • 大小: 46.8 KB
  • 大小: 91.3 KB
  • 大小: 48.3 KB
2
5
分享到:
评论

相关推荐

    计算机软件测试笔试题

    编程题,如冒泡排序,是常见的算法题,要求考生用C或Java语言实现。冒泡排序是一种简单的排序算法,通过重复遍历数组,比较相邻元素并交换位置,直至数组完全排序。 判断题和选择题进一步检验了考生对软件测试概念...

    全国计算机等级考试二级C考试大纲(2008年最新版).pdf

    此外,还需要熟悉各种排序和查找算法,如交换类排序(冒泡排序、快速排序)、选择类排序(选择排序、堆排序)、插入类排序(插入排序、希尔排序)以及二分查找法。 程序设计基础方面,重点在于结构化程序设计和面向...

    文思软件测试笔试+面试题

    7. **冒泡排序算法**(Java实现): ```java void bubbleSort(int[] data) { for (int i = 0; i ; i++) { for (int j = 0; j ; j++) { if (data[j] &gt; data[j + 1]) { int temp = data[j]; data[j] = data[j + 1...

    整理最近自己前端和JAVA开发笔试题中的知识点(公司面试).zip

    8. **算法与数据结构**:掌握基础的排序算法(如冒泡、插入、选择、快速、归并等)和查找算法。理解常见数据结构,如栈、队列、链表、树等。 9. **框架与库**:了解MyBatis、Hibernate等持久层框架,以及Spring MVC...

    2009年下半年 软件设计师 综合知识.zip

    3. **算法设计与分析**:包括排序算法(冒泡、选择、插入、快速、归并等)、查找算法(顺序、二分查找等),以及时间复杂度和空间复杂度的分析。 4. **操作系统原理**:理解操作系统的功能和类型(如批处理、分时、...

    2010年上半年软件设计师全真题 软考历年考题

    2. **数据结构**:2010年的考题可能涉及数组、链表、栈、队列、树(如二叉树、AVL树、红黑树)、图等基本数据结构,以及排序算法(如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序)和查找算法(如顺序...

    计算机二级公共基础知识

    顺序查找法每一次比较,只将查找范围减少1,而二分法查找,每比较一次,可将查找范围减少为原来的一半,效率大大提高。 对于长度为n的有序线性表,在最坏情况下,二分法查找只需比较log2n次, 二级公共...

    计算机二级VFP教程.pdf

    排序算法包括交换类、插入类和选择类,如冒泡排序、快速排序、简单插入排序、希尔排序、选择排序和堆排序。 程序设计基础强调了结构化编程方法,遵循自顶向下、逐步求精、模块化和限制使用goto的原则。程序的基本...

    软件设计师资料,超齐全

    这部分涉及基本的算法设计与分析,如排序算法(冒泡排序、快速排序、归并排序)、查找算法(顺序查找、二分查找)以及时间复杂度和空间复杂度的评估。熟悉这些内容有助于在实际问题中选择合适的方法。 四、数据库...

    程序员考试关键考点梳理与考前集训(PDG)

    2. **算法与数据结构**:包括排序(如冒泡排序、快速排序、归并排序)和查找(如线性查找、二分查找)算法,以及数组、链表、栈、队列、树、图等基本数据结构的原理和操作。 3. **软件工程**:理解软件生命周期,...

    2008年上半年软件设计师 试卷

    试卷可能包含对各种编程语言如C++、Java、C#的语法和特性测试,以及对数据结构的理解,如数组、链表、栈、队列、树和图的使用。考生需能灵活运用这些数据结构解决实际问题,并理解其时间复杂度和空间复杂度。 三、...

    计算机二级公共基础.pdf

    12. **冒泡排序的时间复杂度**:最坏情况下,冒泡排序的时间复杂度为 O(n*(n-1)/2)。 13. **面向对象编程**:面向对象的对象是系统中描述客观事物的实体,具有属性和行为。 14. **需求分析**:需求获取、需求分析...

    华为公司软件测试笔试题、及其他软件测试笔试题

    5. **编程基础**:冒泡排序是一种简单的排序算法,通过不断交换相邻的逆序元素来逐渐排序。题目要求用C或Java实现,因此需要掌握基本的编程语法和逻辑。 6. **测试文档与流程**:软件测试过程中涉及的文档包括测试...

    2023年计算机模拟试卷参考答案(文风).zip

    算法是解决问题的方法,模拟试卷中可能包括排序算法(如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等)、搜索算法(如深度优先搜索、广度优先搜索)、动态规划、贪心算法和回溯法等。 五、操作系统...

    学生成绩管理系统(c语言)课程设计报告.doc

    总分排序功能实现使用冒泡法排序算法实现,系统将链表中的学生信息按照总分的降序排序,并输出结果。 查询功能实现使用链表实现,用户可以输入学生的学号,系统将输出该学生的相关信息。 5. 系统测试 系统测试...

    软件设计师真题及答案(截止2009上半年全部)

    3. **算法设计与分析**:学习和理解常见算法,如排序(快速排序、归并排序、冒泡排序等)、查找(二分查找、哈希查找等)以及图论中的最短路径算法(Dijkstra、Floyd-Warshall等)。 4. **操作系统原理**:理解操作...

Global site tag (gtag.js) - Google Analytics