当前位置:首页 » 编程语言 » java插入排序

java插入排序

发布时间: 2022-09-23 09:25:56

java中有哪几种常用的排序方法

最主要的是冒泡排序、选择排序、插入排序以及快速排序

1、冒泡排序



冒泡排序是一个比较简单的排序方法。在待排序的数列基本有序的情况下排序速度较快。若要排序的数有n个,则需要n-1轮排序,第j轮排序中,从第一个数开始,相邻两数比较,若不符合所要求的顺序,则交换两者的位置;直到第n+1-j个数为止,第一个数与第二个数比较,第二个数与第三个数比较,......,第n-j个与第n+1-j个比较,共比较n-1次。此时第n+1-j个位置上的数已经按要求排好,所以不参加以后的比较和交换操作。

例如:第一轮排序:第一个数与第二个数进行比较,若不符合要求的顺序,则交换两者的位置,否则继续进行二个数与第三个数比较......。直到完成第n-1个数与第n个数的比较。此时第n个位置上的数已经按要求排好,它不参与以后的比较和交换操作;第二轮排序:第一个数与第二个数进行比较,......直到完成第n-2个数与第n-1个数的比较;......第n-1轮排序:第一个数与第二个数进行比较,若符合所要求的顺序,则结束冒泡法排序;若不符合要求的顺序,则交换两者的位置,然后结束冒泡法排序。


共n-1轮排序处理,第j轮进行n-j次比较和至多n-j次交换。


从以上排序过程可以看出,较大的数像气泡一样向上冒,而较小的数往下沉,故称冒泡法。



public void bubbleSort(int a[])


{


int n = a.length;


for(int i=0;i<n-1;i++)


{


for(int j=0;j<n-i-1;j++)


{


if(a[j] > a[j+1])


{


int temp = a[j];


a[j] = a[j + 1];


a[j + 1] = temp;


}


}


}


}



2、选择排序



选择法的原理是先将第一个数与后面的每一个数依次比较,不断将将小的赋给第一个数,从而找出最小的,然后第二个数与后面的每一个数依次比较,从而找出第二小的,然后第三个数与后面的每一个数依次比较,从而找出第三小的.....直到找到最后一个数。


public void sort(int x[])


{


int n=x.length;


int k,t;


for(int i=0;i<n-1;i++)


{


k=i;


for(int j=i+1;j=n;j++)


{


if(x[j]>x[k])k=j;


if(k!=i)


{


t=x[i];


x[i]=x[k];


x[k]=t;


}


}


}


}


3、插入排序



插入排序的原理是对数组中的第i个元素,认为它前面的i-1个已经排序好,然后将它插入到前面的i-1个元素中。插入排序对少量元素的排序较为有效.



public void sort(int obj[])


{


for(int j=1;j<obj.length;j++)


{


int key=obj[j];


int i=j-1;


while(i>=0&&obj[i]>key)


{


obj[i+1]=obj[i];


i--;


}


obj[i+1]=key;


}


}



4、快速排序



快速排序是对冒泡排序的一种改进。它的基本思想是:通过一次排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此大道整个数据变成有序序列。



public void quickSort(int obj[],int low,int high)


{


int i=low;


int j=high;


int keyValue=obj[i];


while(i<j)


{


int temp=0;


while(i<j&&obj[j]>=keyValue)


{


j=j-1;


}


temp=obj[j];


obj[j]=obj[i];


obj[i]=temp;


while(i<j&&obj[i]<=keyValue)


{


i=i+1;


}


temp=obj[j];


obj[j]=ojb[i];


obj[i]=temp;


}


obj[i]=keyValue;


if(low<i-1)


{


quickSort(obj,low,i-1);


}


if(high>i+1)


{


quickSort(obj,i+1,high);


}


}

❷ java 如何按出现顺序调换奇数和偶数的位置

java可以通过使用别的排序例如归并或者插入排序,也可以单独开辟数组的方式来调换奇数和偶数的位置。

这些都和内部排序算法相似,考虑到具有稳定性的排序算法不多,例如插入排序,归并排序等;这里采用插入排序的思想实现。

代码如下:

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。

Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。

20世纪90年代,硬件领域出现了单片式计算机系统,这种价格低廉的系统一出现就立即引起了自动控制领域人员的注意。

因为使用它可以大幅度提升消费类电子产品(如电视机顶盒、面包烤箱、移动电话等)的智能化程度。Sun公司为了抢占市场先机。

❸ JAVA中有哪几种常用的排序方法

1、冒泡排序
冒泡排序是一个比较简单的排序方法。在待排序的数列基本有序的情况下排序速度较快。若要排序的数有n个,则需要n-1轮排序,第j轮排序中,从第一个数开始,相邻两数比较,若不符合所要求的顺序,则交换两者的位置;直到第n+1-j个数为止,第一个数与第二个数比较,第二个数与第三个数比较,......,第n-j个与第n+1-j个比较,共比较n-1次。此时第n+1-j个位置上的数已经按要求排好,所以不参加以后的比较和交换操作。例如:第一轮排序:第一个数与第二个数进行比较,若不符合要求的顺序,则交换两者的位置,否则继续进行二个数与第三个数比较......。直到完成第n-1个数与第n个数的比较。此时第n个位置上的数已经按要求排好,它不参与以后的比较和交换操作;第二轮排序:第一个数与第二个数进行比较,......直到完成第n-2个数与第n-1个数的比较;......第n-1轮排序:第一个数与第二个数进行比较,若符合所要求的顺序,则结束冒泡法排序;若不符合要求的顺序,则交换两者的位置,然后结束冒泡法排序。
共n-1轮排序处理,第j轮进行n-j次比较和至多n-j次交换。
从以上排序过程可以看出,较大的数像气泡一样向上冒,而较小的数往下沉,故称冒泡法。

2、选择排序
选择法的原理是先将第一个数与后面的每一个数依次比较,不断将将小的赋给第一个数,从而找出最小的,然后第二个数与后面的每一个数依次比较,从而找出第二小的,然后第三个数与后面的

3、插入排序
插入排序的原理是对数组中的第i个元素,认为它前面的i-1个已经排序好,然后将它插入到前面的i-1个元素中。插入排序对少量元素的排序较为有效.

4、快速排序
快速排序是对冒泡排序的一种改进。它的基本思想是:通过一次排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此大道整个数据变成有序序列。

❹ JAVA实现插入排序

public class Test {

public static void main(String[] args) {
int[] source = { 1, 3, 2, 5, 12, 3, 123, 23, 2, 541, 1, 76, 76 };
Test test = new Test();
test.printArray(source);
test.insertSort(source);
test.printArray(source);
}

public void insertSort(int[] source) {
for (int i = 1; i < source.length; i++) {
for (int j = i; (j > 0) && (source[j] < source[j - 1]); j--) {
swap(source, j, j - 1);
}
}
printArray(source);// 输出插入排序后的数组值
}

private void swap(int[] source, int x, int y) {
int temp = source[x];
source[x] = source[y];
source[y] = temp;
}

public void printArray(int[] source) {
for (int i : source) {
System.out.print(i + " ");
}
System.out.println();
}
}

❺ java怎么让数组的数字从大到小排序

将数字从大到小排序的方法:

例如简一点的冒泡排序,将第一个数字和后面的数字逐个比较大小,如果小于,则互换位置,大于则不动。此时,第一个数为数组中的最大数。然后再将第二个数与后面的数逐个比较,以次类推。

示例代码如下:
publicclassTest{

publicstaticvoidmain(String[]args){
int[]array={12,3,1254,235,435,236,25,34,23};
inttemp;
for(inti=0;i<array.length;i++){
for(intj=i+1;j<array.length;j++){
if(array[i]<array[j]){
temp=array[i];
array[i]=array[j];
array[j]=temp; //两个数交换位置
}
}
}
for(inti=0;i<array.length;i++){
System.out.print(array[i]+"");
}
}
}

数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。

Java 语言中提供的数组是用来存储固定大小的同类型元素。

你可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量 number0,number1,....,number99

(5)java插入排序扩展阅读

Java中利用数组进行数字排序一般有4种方法:

1、选择排序是先将数组中的第一个数作为最大或最小数,然后通过循环比较交换最大数或最小数与一轮比较中第一个数位置进行排序。

2、冒泡排序也是先将数组中的第一个数作为最大或最小数,循环比较相邻两个数的大小,满足条件就互换位置,将最大数或最小数沉底。

3、快速排序法主要是运用Arrays类中的Arrays.sort方法()实现。

4、插入排序是选择一个数组中的数据,通过不断的插入比较最后进行排序。



❻ java 中 我想把带小数的数字插入 排序里 怎么弄,如下是我的代码。 没积分了,求解答,谢谢

intarray[]=newint[5];
Scannersc=newScanner(System.in);
for(inti=0;i<array.length;i++){
System.out.println("请输入第"+(i+1)+"个数");
array[i]=sc.nextDouble();
}
for(inti=0;i<array.length;i++){
for(intj=i+1;j<array.length;j++){
if(array[j]>array[j+1]){
doubletemp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
}
for(inti=0;i<array.length;i++){
System.out.print(array[i]+"");
}

❼ Java的排序算法有哪些

java的排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面讲的排序都是属于内排序。
1.插入排序:直接插入排序、二分法插入排序、希尔排序。
2.选择排序:简单选择排序、堆排序。
3.交换排序:冒泡排序、快速排序。
4.归并排序
5.基数排序

❽ JAVA一个已经排好序的数组(元素为10个),插入一个数按照原来的排序

1、数组插入新数据,首先需要扩容,java中数组需要使用数组的扩容方式:arr = Arrays.Of(arr, arr.length+1);
或者,//已有 int [] num ;
num = new int[num.length+1];重新定义数组,之后按顺序遍历插入,或者插入以后再排序也是可以的。

❾ Java插入排序

Java程序入口是main函数,
而main函数的参数必须是String[] args;

所以你要把函数名mian改成其他如sort,并新写一个main函数来调用他。
public static void main(String[] args){
}

❿ java 数据插入 根据数据库标识 排序

你在数据库里面增加一个表项叫做index,添加的时候就写:insert into xx value(select max(*) in xxx),...)这样就实现了程序式的sequence,在进行上下的时候修改index即可,如果3要移到1就要先把3移到tmp变量,2移到3,1移到2,然后3再移到1,这是数组实现方式;
还有链表实现方式,就是添加一个next表项,里面存储顺序下一个的id(id是不可或缺的,一个唯一性标示这个你知道吧?可以直接用数据库支持的autoincrease),上下修改的时候就要复杂一些,比如3移到1,首先找到3的前驱2,然后2的next指向4,然后把0的next指向3,;
比较2种方式,数组方式的查找复杂度是O(1),链表是O(n),数组优于链表;
但是数组已知索引的插入复杂度是O(n),链表是O(1),链表比较好;
综上,如果算法基础好可以用链表,水平一般就用数组,另外链表可能还要优化一下,在建表的时候要考虑在额外的配置文件里面存储好头结点。

热点内容
修罗云服务器 发布:2024-05-06 18:05:18 浏览:708
什么电脑可以安装安卓系统 发布:2024-05-06 18:05:15 浏览:776
金标顶配都有哪些配置 发布:2024-05-06 17:58:22 浏览:599
怎么看配置高低是否换电脑 发布:2024-05-06 17:32:01 浏览:968
linux命令查看目录 发布:2024-05-06 17:24:18 浏览:531
sqlvb 发布:2024-05-06 17:24:16 浏览:227
分镜头脚本软件 发布:2024-05-06 17:22:54 浏览:824
华为手机百度的缓存如何清理 发布:2024-05-06 17:22:53 浏览:941
网投源码 发布:2024-05-06 17:10:35 浏览:871
看门狗脚本 发布:2024-05-06 17:10:28 浏览:108