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
分享到:
相关推荐
编程题,如冒泡排序,是常见的算法题,要求考生用C或Java语言实现。冒泡排序是一种简单的排序算法,通过重复遍历数组,比较相邻元素并交换位置,直至数组完全排序。 判断题和选择题进一步检验了考生对软件测试概念...
此外,还需要熟悉各种排序和查找算法,如交换类排序(冒泡排序、快速排序)、选择类排序(选择排序、堆排序)、插入类排序(插入排序、希尔排序)以及二分查找法。 程序设计基础方面,重点在于结构化程序设计和面向...
7. **冒泡排序算法**(Java实现): ```java void bubbleSort(int[] data) { for (int i = 0; i ; i++) { for (int j = 0; j ; j++) { if (data[j] > data[j + 1]) { int temp = data[j]; data[j] = data[j + 1...
8. **算法与数据结构**:掌握基础的排序算法(如冒泡、插入、选择、快速、归并等)和查找算法。理解常见数据结构,如栈、队列、链表、树等。 9. **框架与库**:了解MyBatis、Hibernate等持久层框架,以及Spring MVC...
3. **算法设计与分析**:包括排序算法(冒泡、选择、插入、快速、归并等)、查找算法(顺序、二分查找等),以及时间复杂度和空间复杂度的分析。 4. **操作系统原理**:理解操作系统的功能和类型(如批处理、分时、...
2. **数据结构**:2010年的考题可能涉及数组、链表、栈、队列、树(如二叉树、AVL树、红黑树)、图等基本数据结构,以及排序算法(如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序)和查找算法(如顺序...
顺序查找法每一次比较,只将查找范围减少1,而二分法查找,每比较一次,可将查找范围减少为原来的一半,效率大大提高。 对于长度为n的有序线性表,在最坏情况下,二分法查找只需比较log2n次, 二级公共...
排序算法包括交换类、插入类和选择类,如冒泡排序、快速排序、简单插入排序、希尔排序、选择排序和堆排序。 程序设计基础强调了结构化编程方法,遵循自顶向下、逐步求精、模块化和限制使用goto的原则。程序的基本...
这部分涉及基本的算法设计与分析,如排序算法(冒泡排序、快速排序、归并排序)、查找算法(顺序查找、二分查找)以及时间复杂度和空间复杂度的评估。熟悉这些内容有助于在实际问题中选择合适的方法。 四、数据库...
2. **算法与数据结构**:包括排序(如冒泡排序、快速排序、归并排序)和查找(如线性查找、二分查找)算法,以及数组、链表、栈、队列、树、图等基本数据结构的原理和操作。 3. **软件工程**:理解软件生命周期,...
试卷可能包含对各种编程语言如C++、Java、C#的语法和特性测试,以及对数据结构的理解,如数组、链表、栈、队列、树和图的使用。考生需能灵活运用这些数据结构解决实际问题,并理解其时间复杂度和空间复杂度。 三、...
12. **冒泡排序的时间复杂度**:最坏情况下,冒泡排序的时间复杂度为 O(n*(n-1)/2)。 13. **面向对象编程**:面向对象的对象是系统中描述客观事物的实体,具有属性和行为。 14. **需求分析**:需求获取、需求分析...
5. **编程基础**:冒泡排序是一种简单的排序算法,通过不断交换相邻的逆序元素来逐渐排序。题目要求用C或Java实现,因此需要掌握基本的编程语法和逻辑。 6. **测试文档与流程**:软件测试过程中涉及的文档包括测试...
算法是解决问题的方法,模拟试卷中可能包括排序算法(如冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等)、搜索算法(如深度优先搜索、广度优先搜索)、动态规划、贪心算法和回溯法等。 五、操作系统...
总分排序功能实现使用冒泡法排序算法实现,系统将链表中的学生信息按照总分的降序排序,并输出结果。 查询功能实现使用链表实现,用户可以输入学生的学号,系统将输出该学生的相关信息。 5. 系统测试 系统测试...
3. **算法设计与分析**:学习和理解常见算法,如排序(快速排序、归并排序、冒泡排序等)、查找(二分查找、哈希查找等)以及图论中的最短路径算法(Dijkstra、Floyd-Warshall等)。 4. **操作系统原理**:理解操作...