插入排序法(Java实现)

public class InsertSort {
	public static void main(String[] args)
	{
		//数组声明
		int[] a = {5,1,3,0,1,4,-1};
		int L = a.length;
		//首先确保前两个元素是升序的
		if(a[1]<a[0])
		{
			int tmp=a[0];
			a[0]=a[1];
			a[1]=tmp;
		}
		//其次进行插入排序
		for(int i=2;i<L;i++)
		{
			//如果待插入的数小于或等于已排序的表头
			if(a[i]<=a[0])
			{
				int tmp=a[i];
				for(int j=i;j>0;j--)
				{
					a[j]=a[j-1];
				}
				a[0]=tmp;
			}
			//如果待插入的数大于或等于已排序的表尾
			else if(a[i]>=a[i-1])
				continue;
			//如果待插入的数介于已排序的表中某两个数中间
			else
			{
				for(int k=0;k<i-1;k++)
				{
					if(a[i]>=a[k]&&a[i]<=a[k+1])
					{
						int tmp1=a[i];
						for(int m=i;m>k+1;m--)
						{
							a[m]=a[m-1];
						}
						a[k+1]=tmp1;
					}
				}
			}
		}
		for(int element:a)
			System.out.println(element+" ");
	}
}
时间: 2024-10-09 23:07:08

插入排序法(Java实现)的相关文章

java 数组排序 插入排序法

插入排序法思想:将n个数字分为前面几个是有序数字集合,后面几个为无序集合.当然尚未排序之前,可以将n0 看为有序数集合,N1-Nn-1 看为等待排序的无序集合.从N1开始将无序数一个一个插入到有序数集合中,使之再次成为有序数集合,当第Nn-1 个数字插入有序数集合中后.整个n数字集合便成为有序集合. 示例:2,1,8,9,6,3,4,7,5 第一步排序后结果:1,2,8,9,6,3,4,7,5 第二步排序后结果:1,2,8,9,6,3,4,7,5 第三步排序后结果:1,2,8,9,6,3,4,7

算法大神之路----排序(插入排序法)

插入排序法 所谓插入排序法乃是将一个数目插入该占据的位置. 输入一个元素,检查数组列表中的每个元素,将其插入到一个已经排好序的数列中的适当位置,使数列依然有序,当最后一个元素放入合适位置时,该数组排序完毕. 代码示例: import java.util.Random; /** * 算法大神之路----排序(插入排序法) */ public class Study03 { public static void main(String[] args) { //新建一个数组 int[] arr = n

PHP--冒泡、选择、插入排序法

使用php来实现常用三种排序方法: 1 <?php 2 /** 3 * Created by PhpStorm. 4 * User: xxx 5 * Date: 2016/10/12 6 * Time: 21:38 7 */ 8 // 冒泡排序法 9 function maopao_sort(&$arr){ 10 // 外循环 控制趟数 只需要count($arr)-1趟就可以完成排序 11 for($i=0;$i<count($arr)-1;$i++){ 12 // 内循环控制每一趟

插入排序法---题目

题目内容: 實作插入排序法讓一個序列的數字遞增,並輸出數字總共交換了幾次. 比如說一個序列1 3 7 9 2,前四個數字都已經排好了,這時候第五個數字2進來,他必須跟9,7,3交換使得序列變成1 2 3 7 9.這個數字2的交換次數就是3次. 输入格式: 輸入第一行為一個數字T,代表測試資料的筆數.接下來有T筆測資,每筆測資第一行為一個正整數N,表示這筆測資有N個數字.每筆測資的第二行會有N個數字,每個數字間以空格隔開. 數字範圍: 0 < N <= 100 0 <= 序列內的數字 &l

实例365(15)--------------经典排序----插入排序法

前言:此代码设计的比较简洁,可能不太容易理解,插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕. 一:截图 二:代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.

排序之直接插入排序法

最近看数据结构时看到直接插入排序法,其基本思想是:将一个记录插入到已经排好序的有序表中,从而得到一个新的,记录数增1的有序表 下面是代码实现与测试 1 #include <iostream> 2 using namespace std; 3 void InsertSort(int *q,int L) 4 { 5 int i,j,temp; 6 for(i=1;i<L;i++) 7 { 8 temp=q[i]; 9 for(j=i-1;j>=0&&temp<q[

插入排序算法--java

插入排序 假设我们输入的是 “5,1,4,2,3” 我们从第二个数字开始,这个数字是1,我们的任务只要看看1有没有正确的位置,我们的做法是和这个数字左边的数字来比,因此我们比较1和5,1比5小,所以我们就交换1和5,原来的排列就变成了“1,5,4,2,3 ” 接下来,我们看第3个数字有没有在正确的位置.这个数字是4,它的左边数字是5,4比5小,所以我们将4和5交换,排列变成了 “1,4,5,2,3 "我们必须继续看4有没有在正确的位置,4的左边是1,1比4小,4就维持不动了. 再来看第四个数字,

php 四种基础算法 ---- 插入排序法

3.插入排序法 插入排序法思路:将要排序的元素插入到已经 假定排序号的数组的指定位置. 代码: function insert_sort($arr) {    //区分 哪部分是已经排序好的    //哪部分是没有排序的    //找到其中一个需要排序的元素    //这个元素 就是从第二个元素开始,到最后一个元素都是这个需要排序的元素    //利用循环就可以标志出来    //i循环控制 每次需要插入的元素,一旦需要插入的元素控制好了,    //间接已经将数组分成了2部分,下标小于当前的(

插入排序之Java实现

一.声明 算法思路部分借鉴于<算法导论>(第三版),实现过程均属作者原创,转载或引用请注明出处. 二.算法概述 插入排序算法适用于少量元素的排序.插入排序的过程就好比排序一副扑克牌.开始时,左手为空并且桌子上的牌面朝下.然后,每次从桌子上拿走一张扑克牌并将它插入左手中正确的位置.为了找到牌的正确位置,需要从右开始将它与已在手中的每张牌进行比较.每次插入结束后左手中的牌总是排序好的. 三.算法思路 1.位码实现 INSERTION-SORT(A) for j = 2 to A.length ke

insertion Sort List (链表的插入排序) leecode java

逻辑简单,代码难写,基础不劳,leecode写注释不能出现中文,太麻烦,我写了大量注释,链表问题最重要的就是你那个指针式干啥的 提交地址https://oj.leetcode.com/problems/insertion-sort-list/ /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; *