排序算法是每一个IT工作者,必不可少的。虽然JAVA API中封装了很多的配需算法,那么仍然需要做一个总结。笔者认为这是基本功,那些花把势最好不要用。
排序算法可以分为两种:内排序和外排序,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面对内排序做一个总结。
1、插入排序:直接插入排序、二分法插入排序、希尔排序
2、选择排序:简单选择排序、堆排序。
3、交换排序:冒泡排序、快速排序
4、归并排序
5、基数排序
一、插入排序
基本思想:基本经过了三步a,b,c大致可以明白其基本思想。首先标记一个3,然后嘉定412已经排序排好了,那么需要排在4前边,那就就是3412,然后再一次寻找一下一个标记着。
代码如下
package cn.tallny.sort;
public class InserSort {
public static void insertSort(int []number)
{ for(int out=1;out<number.length;out++)
{ int temp=number[out];
int in=out;//记录一下被标记的
//往下沉淀
while(in>0&&temp>number[in-1])
{
number[in]=number[in-1];
in--;
}
number[in]=temp;
}
}
public static void main(String[] args) {
int []number=new int[10];
int []num;
number[0]=8;
number[1]=9;
number[2]=6;
number[3]=7;
number[4]=5;
number[5]=1;
number[6]=3;
number[7]=2;
number[8]=10;
number[9]=4;
insertSort(number);
for(int a:number)
{
System.out.print(a+"\t");
}
}
}
二、选择排序
思想:每趟从待排序的记录序列中选择关键字最小的记录放置到已排序表的最前位置,直到全部排完。
思想如图
代码如下:
package cn.tallny.sort;
public class SelectSort {
public static void selectSort(int []number)
{ for(int i=0;i<number.length-1;i++)
{ int m=i;
for(int j=i+1;j<number.length;j++)
{if(number[j]<number[m])
m=j;
}
if(i!=m)
swap(number,i,m);
}
}
public static void swap(int []number,int i,int j)
{
int temp=number[i];
number[i]=number[j];
number[j]=temp;
}
public static void main(String[] args) {
int []number=new int[10];
int []num;
number[0]=8;
number[1]=9;
number[2]=6;
number[3]=7;
number[4]=5;
number[5]=1;
number[6]=3;
number[7]=2;
number[8]=10;
number[9]=4;
selectSort(number);
for(int a:number)
{
System.out.println(a);
}
}
}
三、冒泡算法
思想:在要排序的一组数中,对当前还未排好序的全部数中,自上而下相邻的两个数一次进行比较和调整,让较大的数往下沉,较小的往上冒。
代码实现如下:
package cn.tallny.sort;
public class bubblingSort {
public static void bubblingSort(int []number)
{
for(int i=0;i<number.length;i++)
{
for(int j=0;j<number.length-1-i;j++)
{
if(number[j]<number[j+1])
swap(number,j,j+1);
}
for(int a:number)
{
System.out.print(a+"\t");
}
System.out.println();
}
}
public static void swap(int []number,int i,int j)
{
int temp=number[i];
number[i]=number[j];
number[j]=temp;
}
public static void main(String[] args) {
int []number=new int[10];
int []num;
number[0]=8;
number[1]=9;
number[2]=6;
number[3]=7;
number[4]=5;
number[5]=1;
number[6]=3;
number[7]=2;
number[8]=10;
number[9]=4;
bubblingSort(number);
/*for(int a:number)
{
System.out.println(a);
}*/
}
}
本文详细介绍了排序算法的基础知识,包括插入排序、选择排序和冒泡排序的原理与代码实现。重点突出算法的核心思想与应用案例。

1823

被折叠的 条评论
为什么被折叠?



