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();
}
}
}
欲知后事如何,请等待排序算法(二)。。。