插入排序方法java代码的简单介绍

Java几种简单的排序源代码给你介绍4种排序方法及源码,供参考
1.冒泡排序
主要思路: 从前往后依次交换两个相邻的元素,大的交换到后面,这样每次大的数据就到后面,每一次遍历 , 最大的数据到达最后面,时间复杂度是O(n^2) 。
public static void bubbleSort(int[] arr){
for(int i =0; iarr.length - 1; i){
for(int j=0; jarr.length-1; j){
if(arr[j]arr[j 1]){
【插入排序方法java代码的简单介绍】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; jarr.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; parr.length; p){
int temp = arr[p];//保存要插入的数据
//将无序中的数和前面有序的数据相比 , 将比它大的数 , 向后移动
for(j=p; j0temp 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; gap0 ; gap/=2){
for(int i = gap; iarr.length; i){
int temp = arr[i];
for(j = i; j=gaptemparr[j-gap]; j-=gap){
arr[j] = arr[j-gap];
}
arr[j] = temp;
}
}
}
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; idata.length; i) {
for (int j = i; (j0)(data[j]data[j - 1]); j--) {
swap(data, j, j - 1);
}
}
return data;
}
/**
* 冒泡排序法
* @param data
* @return
* @Des 冒泡排序(Bubble Sort)分为若干趟进行 , 每一趟排序从前往后比较每两个相邻的元素的大?。ㄒ虼艘惶伺判蛞冉蟦-1对位置相邻的数)并在
* 每次发现前面的那个数比紧接它后的数大时交换位置;进行足够多趟直到某一趟跑完后发现这一趟没有进行任何交换操作(最坏情况下要跑n-1趟 ,
* 这种情况在最小的数位于给定数列的最后面时发生) 。事实上,在第一趟冒泡结束后,最后面那个数肯定是最大的了,于是第二次只需要对前面n-1
* 个数排序,这又将把这n-1个数中最小的数放到整个数列的倒数第二个位置 。这样下去,冒泡排序第i趟结束后后面i个数都已经到位了,第i 1趟实
* 际上只考虑前n-i个数(需要的比较次数比前面所说的n-1要?。?。这相当于用数学归纳法证明了冒泡排序的正确性
java数组的插入排序什么狗蛋书,完全不知道在搞什么.
要排序直接用API里的Arrays工具类就好.要学原理那都是数学的问题.代码讲究不要重复发明轮子.
排序这种大众功能肯定已经有高手写好了效率非常高的.完全没有必要再去写
java程序修改:直接插入法,边输入边排序import java.util.Scanner;
public class InsertSortchange
{
public static void directSort(double n[])// 对数组下标为1的开始的元素进行直接插入排序
{
int i, j;
for (i = 2; in.length; i)
{
n[0] = n[i];
for (j = i - 1; j0n[j]n[0]; j--)
n[j1] = n[j];
;
n[j1] = n[0];
}
}// 对10个数字进行插入排序
public static void showSort(double[] num)
{
System.out.println("排序结果为插入排序方法java代码:");
for (int i = 1 ; inum.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.length1];
//复制数据
System.arraycopy(num, 0, tmp, 0, num.length);
tmp[num.length] = newNumber;
//指向新的数组
num = tmp;
//排序并输出
directSort(num);
showSort(num);
}
}
}
Java插入排序Java程序入口是main函数,
而main函数的参数必须是String[] args;
所以你要把函数名mian改成其他如sort,并新写一个main函数来调用他 。
public static void main(String[] args){
}
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=0ta[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代码和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读