插入排序

理论就不多说了,直接看代码吧。有些解释就直接注释在代码中了。
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;
		//因为是要和第一个数相比,所以,取值取第二个,即下标为1
			for(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方法将数组转换成String
		System.out.println("排序之前:"+Arrays.toString(arr));
		sort(arr,arr.length);
		System.out.println("排序之前:"+Arrays.toString(arr));
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值