Java排序问题(一)

1、冒泡排序

     思想:通俗来说,就像泡泡向上冒一样,每次都是最小的漂到上面,假如在同一个立体空间中,每次最小(最大)的到达一个端点,然后把这个端点的位置确定,再在其他的泡泡中找出最小(最大)的到达其他剩余部分的端点,依次进行下去。就是冒泡排序。

package Sort;

import java.util.Scanner;

public class maopao {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int n;
		int temp;
		System.out.println("定义数组长度:");
		while(sc.hasNextInt())
		{
			temp=0;
			n=sc.nextInt();
			int[] arr=new int[n];
			for(int i=0;i<n;i++)
			{
				System.out.print("输入第"+i+"个数。");
				arr[i]=sc.nextInt();
			}
			for(int j=0;j<arr.length;j++)
			{
				for(int k=0;k<arr.length-1-j;k++)
				{
					if(arr[k]>arr[k+1])
					{
						temp=arr[k];
						arr[k]=arr[k+1];
						arr[k+1]=temp;
					}
				}
			}
			System.out.print("输出排序后数组:");
			System.out.print(arr[0]);
			for(int i=1;i<arr.length;i++)
			{
				
				System.out.println(" "+arr[i]);
			}
			System.out.println();
		}
	}

}

 2、选择排序

      思想:每次都是找到这一列数的最小(最大)与第一个数交换位置,依次进行下去,就是选择排序。

package Sort;

import java.util.Scanner;

public class selectSort {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
			Scanner sc = new Scanner(System.in);
			System.out.println("选择排序:");
			System.out.println("请输入一个数组长度,可多次输入");
			while(sc.hasNextInt())
			{
				int temp = 0;
				int n=sc.nextInt();
				int[] arr= new int[n];
				for(int i=0;i<n;i++)
				{
					System.out.print("输入第"+(i+1)+"个数字");
					arr[i]=sc.nextInt();
				}
				for(int j=0;j<n;j++)
				{
					int min=j;
					for(int k=j+1;k<n;k++)
					{
						if(arr[min]>arr[k])
						{
							min=k;
						}
					}
					if(j!=min)
					{
						temp=arr[j];
						arr[j]=arr[min];
						arr[min]=temp;
					}
				}
				System.out.println("输出排序后数组:");
				System.out.print(arr[0]);
				for(int i=1;i<n;i++)
				{
					System.out.print(" "+arr[i]);
				}
				System.out.println();
			}
	}

}

 3、插入排序

      思想:相对前两种排序,代码可能会比较难理解一点,通俗的来说,就是补一个数列分成两部分,第一部分开始的时候只有第一个数字,每次都拿出第二部分数组的第一个数插入到第一部分 数组的 合适位置,依次进行到最后,使两个数组合并成一个数组。

package Sort;

import java.util.Scanner;

public class insertSort {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		System.out.println("插入排序:");
		System.out.println("请输入数组长度,可多次输入:");
		while(sc.hasNextInt())
		{
			int temp=0;
			int k;
			int n=sc.nextInt();
			int[] arr=new int[n];
			for(int i=0;i<n;i++)
			{
				System.out.print("请输入第"+(i+1)+"个数");
				arr[i]=sc.nextInt();
			}
			for(int j=1;j<n;j++)
			{
				temp=arr[j];
				k=j-1;
				while(k>= 0&&temp<arr[k])	
				{
					arr[k+1]=arr[k];
				    k--;
				}
				arr[k+1]=temp; 
			}
			System.out.println("输出排序后的数列:");
			System.out.print(arr[0]);
			for(int t=1;t<n;t++)
			{
				System.out.print(" "+arr[t]);
			}
			System.out.println();
		}
	}

}

 欲知后事如何,请等待排序算法(二)。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值