
正文
插入排序方法java代码的简单介绍
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Java几种简单的排序源代码
给你介绍4种排序方法及源码,供参考
1.冒泡排序
主要思路: 从前往后依次交换两个相邻的元素,大的交换到后面,这样每次大的数据就到后面,每一次遍历,最大的数据到达最后面,时间复杂度是O(n^2)。
public static void bubbleSort(int[] arr){
for(int i =0; i arr.length - 1; i++){
for(int j=0; j arr.length-1; j++){
if(arr[j] arr[j+1]){
arr[j] = arr[j]^arr[j+1];
arr[j+1] = arr[j]^arr[j+1];
arr[j] = arr[j]^arr[j+1];
}
}
}
}
2.选择排序
主要思路:每次遍历序列,从中选取最小的元素放到最前面,n次选择后,前面就都是最小元素的排列了,时间复杂度是O(n^2)。
public static void selectSort(int[] arr){
for(int i = 0; i arr.length -1; i++){
for(int j = i+1; j arr.length; j++){
if(arr[j] arr[i]){
arr[j] = arr[j]^arr[i];
arr[i] = arr[j]^arr[i];
arr[j] = arr[j]^arr[i];
}
}
}
}
3.插入排序
主要思路:使用了两层嵌套循环,逐个处理待排序的记录。每个记录与前面已经排好序的记录序列进行比较,并将其插入到合适的位置,时间复杂度是O(n^2)。
public static void insertionSort(int[] arr){
int j;
for(int p = 1; p arr.length; p++){
int temp = arr[p]; //保存要插入的数据
//将无序中的数和前面有序的数据相比,将比它大的数,向后移动
for(j=p; j0 temp arr[j-1]; j--){
arr[j] = arr[j-1];
}
//正确的位置设置成保存的数据
arr[j] = temp;
}
}
4.希尔排序
主要思路:用步长分组,每个分组进行插入排序,再慢慢减小步长,当步长为1的时候完成一次插入排序, 希尔排序的时间复杂度是:O(nlogn)~O(n2),平均时间复杂度大致是O(n^1.5)
public static void shellSort(int[] arr){
int j ;
for(int gap = arr.length/2; gap 0 ; gap/=2){
for(int i = gap; i arr.length; i++){
int temp = arr[i];
for(j = i; j=gap temparr[j-gap]; j-=gap){
arr[j] = arr[j-gap];
}
arr[j] = temp;
}
}
}
相关问答
Q1: java中排序算法代码
package temp;
import sun.misc.Sort;
/**
* @author zengjl
* @version 1.0
* @since 2007-08-22
* @Des java几种基本排序方法
*/
/**
* SortUtil:排序方法
* 关于对排序方法的选择:这告诉我们,什么时候用什么排序最好。当人们渴望先知道排在前面的是谁时,
* 我们用选择排序;当我们不断拿到新的数并想保持已有的数始终有序时,我们用插入排序;当给出的数
* 列已经比较有序,只需要小幅度的调整一下时,我们用冒泡排序。
*/
public class SortUtil extends Sort {
/**
* 插入排序法
* @param data
* @Des 插入排序(Insertion Sort)是,每次从数列中取一个还没有取出过的数,并按照大小关系插入到已经取出的数中使得已经取出的数仍然有序。
*/
public int[] insertSort(int[] data) {
1/11页
int temp;
for (int i = 1; i data.length; i++) {
for (int j = i; (j 0) (data[j] data[j - 1]); j--) {
swap(data, j, j - 1);
}
}
return data;
}
/**
* 冒泡排序法
* @param data
* @return
* @Des 冒泡排序(Bubble Sort)分为若干趟进行,每一趟排序从前往后比较每两个相邻的元素的大小(因此一趟排序要比较n-1对位置相邻的数)并在
* 每次发现前面的那个数比紧接它后的数大时交换位置;进行足够多趟直到某一趟跑完后发现这一趟没有进行任何交换操作(最坏情况下要跑n-1趟,
* 这种情况在最小的数位于给定数列的最后面时发生)。事实上,在第一趟冒泡结束后,最后面那个数肯定是最大的了,于是第二次只需要对前面n-1
* 个数排序,这又将把这n-1个数中最小的数放到整个数列的倒数第二个位置。这样下去,冒泡排序第i趟结束后后面i个数都已经到位了,第i+1趟实
* 际上只考虑前n-i个数(需要的比较次数比前面所说的n-1要小)。这相当于用数学归纳法证明了冒泡排序的正确性
Q2: java数组的插入排序
什么狗蛋书,完全不知道在搞什么.
要排序直接用API里的Arrays工具类就好.要学原理那都是数学的问题.代码讲究不要重复发明轮子.
排序这种大众功能肯定已经有高手写好了效率非常高的.完全没有必要再去写
Q3: java程序修改:直接插入法,边输入边排序
import java.util.Scanner;
public class InsertSortchange
{
public static void directSort(double n[])// 对数组下标为1的开始的元素进行直接插入排序
{
int i, j;
for (i = 2; i n.length; i++)
{
n[0] = n[i];
for (j = i - 1; j 0 n[j] n[0]; j--)
n[j + 1] = n[j];
;
n[j + 1] = n[0];
}
}// 对10个数字进行插入排序
public static void showSort(double[] num)
{
System.out.println("排序结果为插入排序方法java代码:");
for (int i = 1 ; i num.length; i++)
{
System.out.print(num[i] + " ");
}
}
public static void main(String args[])
{
double[] num = {0};
Scanner in = new Scanner(System.in);
double newNumber;
System.out.println("输入0结束输入");
while(true)
{
System.out.println("\n请输入合法的数字插入排序方法java代码:");
newNumber = in.nextDouble();
if(newNumber == 0f)
{
System.out.println("用户取消排序");
break;
}
//临时数组
double[] tmp = new double[num.length + 1];
//复制数据
System.arraycopy(num, 0, tmp, 0, num.length);
tmp[num.length] = newNumber;
//指向新的数组
num = tmp;
//排序并输出
directSort(num);
showSort(num);
}
}
}
Q4: Java插入排序
Java程序入口是main函数,
而main函数的参数必须是String[] args;
所以你要把函数名mian改成其他如sort,并新写一个main函数来调用他。
public static void main(String[] args){
}
Q5: java实现一个插入排序 排序算法写在一个方法里面 基础数据用数组保存 求代码。。。急啊
public class InsertSort
{
static final int SIZE=10;
static void insertionSort(int[] a) //插入排序
{
int i,j,t,h;
for (i=1;ia.length;i++)
{
t=a[i];
j=i-1;
while(j=0 ta[j])
{
a[j+1]=a[j];
j--;
}
a[j+1]=t;
System.out.print("第"+i+"步排序结果:"); //输出每步排序的结果
for(h=0;ha.length;h++)
{
System.out.print(" "+a[h]); //输出
}
System.out.print("\n");
}
}
public static void main(String[] args)
{
int[] shuzu=new int[SIZE];
int i;
for(i=0;iSIZE;i++)
{
shuzu[i]=(int)(100+Math.random()*(100+1)); //初始化数组
}
System.out.print("排序前的数组为:\n"); //输出排序前的数组
for(i=0;iSIZE;i++)
{
System.out.print(shuzu[i]+" ");
}
System.out.print("\n");
insertionSort(shuzu); //排序操作
System.out.print("排序后的数组为:\n");
for(i=0;iSIZE;i++)
{
System.out.print(shuzu[i]+" "); //输出排序后的数组
}
System.out.print("\n");
}
}
关于插入排序方法java代码和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






