基础是很重要的,在这里将各种排序方式归纳总结:
1,插入排序:
import java.util.ArrayList;
import java.util.Random;
//插入排序一组自动生成的数据
//JAVA类实现序例化的方法是实现java.io.Serializable接口
//Collection框架中实现比较要实现Comparable 接口和 Comparator 接口
public class InserSort {
/**
* @param args
*/
ArrayList<Integer> al;
//生成数据集合,带参数的,可以重写
public InserSort(int num,int mod){
System.out.print("InserSort...................\n");
al = new ArrayList<Integer>(num);
Random rand = new Random();
System.out.print("The ArrayList Sort Before:\n");
for(int i=0;i<num;i++){
al.add(new Integer(Math.abs(rand.nextInt())%mod+1));
System.out.println("al["+i+"]="+al.get(i));
}
}
//插入排序的方法
public void SortIt(){
System.out.print("SortIt\n...................\n");
System.out.println("原集合:"+al.toString());
Integer tempInt;
int MaxSize = 1;
for(int i=1;i<al.size();i++){
System.out.print("i="+i+":");
tempInt = (Integer) al.remove(i);
if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue()){
al.add(MaxSize,tempInt);
MaxSize++;
System.out.println(al.toString());
}else{
for(int j=0;j<MaxSize;j++){
System.out.print("j="+j+":");
if(((Integer)al.get(j)).intValue()>tempInt.intValue()){
al.add(j,tempInt);
MaxSize++;
System.out.println(al.toString());
break;
}
}
}
}
System.out.println("The ArrayList Sort After:");
for(int i=0;i<al.size();i++){
System.out.println("al["+i+"]="+al.get(i));
}
}
public static void main(String[] args) {
//实例化InserSort类,生成数据集合
InserSort is = new InserSort(50, 100);
//通过InserSort类的SortIt方法将集合中的数据进行排序
is.SortIt();
}
}
分享到:
相关推荐
**插入排序**是一种基础且直观的排序算法,它的工作原理类似于我们手动整理扑克牌的过程。在本系列的“算法可视化”中,我们将深入探讨插入排序的实现及其在实际编程中的应用。 **一、插入排序的基本概念** 插入...
这里我们将深入探讨三种常见的排序算法:冒泡排序、直接排序(也称为插入排序)以及反转排序。这些算法虽然简单,但在理解排序原理和优化算法性能方面具有重要意义。 1. 冒泡排序: 冒泡排序是最基础的排序算法之一...
本文将详细讲解六种经典的排序算法——合并排序、插入排序、希尔排序、快速排序、冒泡排序以及桶排序,并结合提供的文件名(sort.c、set.c、main.c、set.h、sort.h)推测出每个文件可能包含的代码实现。 1. **合并...
希尔排序是一种基于插入排序的快速排序算法,由Donald Shell在1959年提出。它通过将待排序的数组元素按某个增量分组,然后对每组进行直接插入排序,随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,...
它是基于直接插入排序的,但是将记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。 **代码实现**: ```...
插入排序: * 始终定义第一个元素为有序, 将无序元素 * 逐个插入到有序排列之中,不断的移动数据, * 空出一个适当的位置,把待插入的元素放到里 * 面去。
在链表排序中,我们通常采用两种主要的排序算法:插入排序和归并排序。这里我们将以简单的插入排序为例,介绍如何对单链表进行排序。 **插入排序**的基本思想是将未排序的元素逐个插入到已排序的部分,从而保持已...
- 插入排序、选择排序和堆排序为O(1),是原地排序算法。 - 快速排序和归并排序需要额外的空间,分别为O(log n)和O(n)。 - 基数排序需要O(n + k)的额外空间。 - **稳定性**: - 插入排序、归并排序和基数排序是...
半插入排序,也称为二分插入排序,是一种在内部排序领域广泛应用的算法,尤其适用于小规模或部分有序的数据集。这种排序方法结合了直接插入排序的简单性和二分查找的效率,通过减少比较次数来提高排序性能。以下是半...
排序——插入排序 插入排序的基本思想是每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。常见的插入排序有插入排序(Insertion Sort),希尔排序...
总的来说,"插入排序 减治法——C语言代码"是一个学习和实践C语言基础排序算法的好例子,通过阅读和理解这段代码,你可以深入理解插入排序的工作原理,以及如何用C语言来实现它。同时,也可以探讨如何将问题解决策略...
本项目聚焦于面向对象编程中的一个重要应用——排序,通过设计一个程序包来实现多种排序算法,包括插入排序、冒泡排序和快速排序。下面我们将详细探讨这些排序算法。 1. **插入排序**: 插入排序是一种简单直观的...
插入排序的特点是运行时间与输入情况有关,对于一个部分有序(数组中元素离最终位置都不远,或者一个有序的大数组加一个小数组)来说速度比较快。其时间复杂度为O(n²),空间复杂度为O(1),稳定排序,原地排序。使用...
常用的排序算法有冒泡排序、选择排序、插入排序、快速排序等。 一、插入排序(Insertion Sort) 插入排序是一种简单的排序算法。其基本思想是每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当位置...
快速排序是一种高效的排序算法,由英国计算机科学家C.A.R. Hoare在1960年提出。它的基本思想是分治法(Divide and Conquer...此外,对于小规模数组,可以考虑使用插入排序,因为快速排序在小数组上可能不如插入排序快。
希尔排序(Shell Sort)是一种基于插入排序的快速排序方法,由Donald Shell于1959年提出。它的主要思想是将待排序的数据按照一定的间隔进行分组,然后对每组进行插入排序,随着间隔逐渐缩小,最后进行一次全排列,...
在"简单插入排序 递归法——C语言代码"这个项目中,我们将看到如何使用C语言实现一个递归版本的插入排序。C语言是一种强大的、低级别的编程语言,常用于系统编程、嵌入式开发和高性能计算等领域。它的语法简洁明了,...
在本主题中,我们将深入探讨四种经典的排序算法:冒泡排序、选择排序、插入排序和堆排序。这些算法虽然简单,但理解它们的原理对于优化代码性能和提升编程技能非常有帮助。 首先,我们来讨论冒泡排序。冒泡排序是一...
接插入排序,简单选择排序,冒泡排序接插入排序,简单选择排序,冒泡排序接插入排序,简单选择排序,冒泡排序接插入排序,简单选择排序,冒泡排序接插入排序,简单选择排序,冒泡排序大家看看!!