插入排序

来源:互联网 发布:剑三成女捏脸数据 云盘 编辑:程序博客网 时间:2024/06/16 21:21
理论就不多说了,直接看代码吧。有些解释就直接注释在代码中了。
package arithmetic;import java.util.Arrays;/*插入排序是最简单的排序方法,是一堆数,一个个来加入到新的数组中,即这个新数组原本是没有一个数,从一堆数中取一个数放进去,然后再取一个数, * 比较,大的放后面,小的放前面,以此类推,这种排序消耗的是来一个数和新数组的所有数进行比较,可以知道其时间复杂度是O(n*n)。插入排序的核心 * 地方在于如何与新数组中的数进行比较,然后交换位置,首先,这个算法包含两个for循环,第一个for表达的是插入的数的个数, * 第二个for循环是为了判断,前一堆数和新插入的数的大小比较,下面看核心部分的代码, *  */public class InsertSort {public static void sort(int[] arr,int n){int temp;//因为是要和第一个数相比,所以,取值取第二个,即下标为1for(int i=1;i<n;i++){temp=arr[i];int k;//从k=i开始,向前比较知道因为每次都是比较到第一个为止,for(k=i;k>0&&arr[k-1]>temp;k--){arr[k]=arr[k-1];//如果每次都是前一个比后一个大,那么比较到最后,总是后替换前}//假设没有这个for,那么接下里的交换就是自己和自己交换了。arr[k]=temp;//插入到最适合的那个数的后面} }public static void main(String[] args){int[] arr=new int[] {2,1,3,4,8,7,6,5};//Arrays.toString方法将数组转换成StringSystem.out.println("排序之前:"+Arrays.toString(arr));sort(arr,arr.length);System.out.println("排序之前:"+Arrays.toString(arr));}}