简单排序算法是我们学习数据结构首先接触到的,也是企业面试易考的。重温一下
class ArraySort{
private long[]a; //封装long类型数组a[]
private int nElems; //数据量
public ArraySort(int max){ //构造
a=new long[max]; //创建一个数组
nElems=0; //初始为空
}
//将元素添加到数组中
public void insert(long value){
a[nElems]=value;
nElems++;
}
//显示数组内容
public void display(){
for(int j=0;j<nElems;j++) //显示每个元素
System.out.print(a[j]+" "); //打印数据
System.out.println(" ");
}
//swap方法交换(最好写到程序内部,减少调用)
private void swap(int one,int two){
long temp=a[one];
a[one]=a[two];
a[two]=temp;
}
//冒泡排序主代码
public void bubbleSort(){
int out, in;
for (out=nElems-1;out>1;out--){//外循环,找到需要比较的最后的位置
for(in=0;in<out;in++){ //内循环,比较outer前面的书籍
if(a[in]>a[in+1]){ //比较大小,将大数据排在后面
swap(in,in+1);
}
}
}
}
//选择排序主代码
public void selectionSort(){
int out, in,min;
for (out=0; out<nElems-1;out++){ //外循环,从最左端开始放
min=out; //第一个默认为最小
for(in=out+1;in<nElems;in++) //内循环
if(a[in]<a[min])
min=in;
swap(out,min);
}
}
//插入排序主代码
public void insertionSort(){
int out, in;
for (out=1; out<nElems;out++){ //外循环,从最左端开始放
long temp=a[out];
in = out;
while(in>0&&a[in-1]>=temp){
a[in]=a[in-1];
--in;
}
a[in]=temp; //插入标记项
}
}
}
class Sort{
public static void main(String[] args){
int maxSize=100; //数组大小
ArraySort arr; //涉及到的数组
arr=new ArraySort(maxSize); //创建数组
//向数组添加数据
arr.insert(77);
arr.insert(42);
arr.insert(85);
arr.insert(12);
arr.insert(69);
arr.insert(98);
arr.insert(23);
//数组打印
arr.display();
//将数组中数据排序
System.out.println("冒泡排序算法结果");
arr.bubbleSort();
arr.display();
System.out.println("选择排序算法结果");
arr.selectionSort();
arr.display();
System.out.println("插入排序算法结果");
arr.insertionSort();
arr.display();
}
}
分享到:
相关推荐
排序算法汇总P: 冒泡排序快速排序直接选择排序插入排序希尔排序 堆排序........
该程序包含7大排序算法: # sort.bubbleSort() #冒泡排序 # sort.shellSort() #希尔排序 # sort.insertionSort() #插入排序 # sort.Selectionsort1() #选择排序 # sort.heapSort() #堆排序 # sort.countSort() ...
排序算法汇总(选择排序、直接插入排序、冒泡排序、希尔排序、快速排序、堆排序) 本资源介绍了六种常用的排序算法:选择排序、直接插入排序、冒泡排序、希尔排序、快速排序和堆排序。下面对每种算法进行详细介绍:...
这里我们汇总了七种常见的排序算法:Shell排序、归并排序、选择排序、快速排序、堆排序、冒泡排序和插入排序。每种算法都有其独特的特点和适用场景,下面将逐一详细介绍。 1. **Shell排序**:由Donald Shell提出,...
本资源"排序算法总汇"提供了一种系统性的学习和理解不同排序算法的途径,其中包含了各种排序算法的详细解释和实际代码实现。下面我们将深入探讨这些排序算法的核心概念和应用。 1. 冒泡排序:冒泡排序是最基础的...
1. **冒泡排序**:冒泡排序是最基础的排序算法之一,通过不断交换相邻的逆序元素,使较大的元素逐渐“浮”到序列的顶端。其时间复杂度为O(n^2)。 2. **插入排序**:插入排序将未排序的元素逐个插入已排序的序列,...
本文将深入探讨标题中提到的几种基于比较的排序算法:选择排序、插入排序、归并排序、快速排序、堆排序、冒泡排序以及希尔排序。 1. **选择排序(Selection Sort)**: - 基本思想:在未排序的序列中找到最小(或...
### 排序算法汇总 #### 一、基本概念与分类 **1. 什么是排序** 排序是一种基础且重要的数据处理技术,它涉及到对一组数据按照特定的规则进行组织,通常是根据记录中的某个或某些关键字段来进行升序或降序排列。...
1. **插入排序**:插入排序是一种简单直观的排序算法,它的工作原理类似于我们平时手动排序扑克牌。算法通过比较未排序序列中的元素与已排序序列的元素,找到合适的位置并插入。时间复杂度在最坏情况下为O(n^2),但...
7种排序算法程序汇总 冒泡排序 选择排序 插入排序 希排序尔 快速排序 二叉排序树 堆排序
本文将汇总几种常见的排序算法及其Java实现,帮助开发者更好地理解和应用这些算法。 首先,我们来看一下排序算法的主要类别: 1. **插入排序**:包括直接插入排序、折半插入排序和希尔排序。插入排序的基本思想是...
以上介绍了Java中常用的四种排序算法,分别是插入排序、选择排序、冒泡排序和快速排序。这些排序算法各有特点,适用于不同的场景。例如,当数据量较小时,可以选择插入排序或选择排序;当数据量较大时,快速排序通常...
冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。此算法的名字由来...
排序算法汇总_选择排序_,直接插入排序,冒泡排序,希尔排序,快速排序,堆排序定义.pdf
插入排序是一种简单的排序算法,它的工作方式是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 1. **初始化**:假设数组的第一个元素已经排好序。 2. **遍历数组**:从第二...
在编程领域,排序算法是数据处理中非常基础且重要的部分,尤其在Java开发中,理解各种排序算法的原理和性能特点对于优化代码至关重要。本文将详细介绍几种常见的排序算法,并通过Java实现来阐述其工作方式。 1. **...
本篇文章将详细介绍标题和描述中提到的几种排序算法,并讨论如何根据实际情况选择合适的排序方法。 1. **插入排序**: - **直接插入排序**:将每个元素插入到已排序部分的正确位置,通常用两个指针,一个指向已...
而对于小规模数据,简单的排序算法如冒泡排序或选择排序也能接受。 在C++中实现这些排序算法,可以加深对语言特性的理解,如指针、引用、函数参数传递等。同时,通过比较不同算法的时间复杂度(如O(n^2)、O(n log n...
Java排序算法汇总大全 在计算机科学中,排序算法是用于对数据序列进行排列的算法,以便根据特定标准对其进行组织。本文将详细介绍Java中常见的几种排序算法,并提供它们的基本原理、性能分析以及适用场景。 1. ...