栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

插入排序、

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

插入排序、

  • 插入排序是将要排序的数组,分成两部分。一部分为有序,一部分为无序(待排序的数组)。
    默认有序中有一个元素(因为只有一个元素,随便怎么放都是有序的),则无序中的元素有-1个。
  • 先从有序的第一个 元素与 无序最后一个比较 若无序的第一个比有序的最后一个大则直接插入该入后面,否则进行寻找
    若无序的第一个比有序的最后一个小则则往有序在前一个寻找或把整个有序寻找完(数组的索引为-1则表示寻找完毕)
  • 若要进行排序的数组是 int[] array=new int[]{101,34 ,119, 1}; 有序101,无序34 119 1
第一个元素的插入过程
int[] array=new int[]{101,34 ,119, 1}; 
// 有序101           无序 34 119 1
//保存待插入的数据和相关索引
		int  temp=array[1];
//待插入数的请一个索引 ;  有序最后一个数。
		int  index=1-1;
//  进行比较
//  index>=0 保证了数组下标不越界
//  temp
		while(index>=0&& temp
				//  将索引指向的数进行重新赋值,  前一个数赋值给后一个数
				array[index+1]=array[index]
				// 记录有序的索引 ,指向下一个元素在进行比较
				index--;
		}
		//遍历结束后的数组101,101 ,119, 1



		// 循环遍历完之后temp>=array[index],index<0
		// index+1 是因为要插入的,在index的前一个,array[index]=array[index+1]前一个数,覆盖后一个数,有两个相同的数组,待插入的数已经保存到temp里,所以只要插入索引的前一个数
		array[index+1]=temp;
		//进行插入操作后,34 ,101,119,, 1
		
第二个元素的插入过程
int[] array=new int[]{101,34 ,119, 1}; 

		int  temp=array[2];
//待插入数的请一个索引 ;  有序最后一个数。
		int  index=2-1;

		while(index>=0&& temp
				//  将索引指向的数进行重新赋值,  前一个数赋值给后一个数
				array[index+1]=array[index]
				// 记录有序的索引 ,指向下一个元素在进行比较
				index--;
		}
	
		array[index+1]=temp;
		//进行插入操作后
		//进行插入操作后,34 ,101,119,, 1
一个循环
//array.length不需要减一  ,因为已经越过一个元素进行排序了  默认 array【0】 ,有序
		for(int i=1;i
			int[] array=new int[]{101,34 ,119, 1}; 

		int  temp=array[i];
//待插入数的请一个索引 ;  有序最后一个数。
		int  index=i-1;

		while(index>=0&& temp
				//  将索引指向的数进行重新赋值,  前一个数赋值给后一个数
				array[index+1]=array[index]
				// 记录有序的索引 ,指向下一个元素在进行比较
				index--;
		}
	
		array[index+1]=temp;
	

		}
  • 在寻找合适的位置是temp
  • 直到temp>=array[index] ,则表示找到了,索引待插入数 应该插入 index索引的后一一个位置 (从小到大)array【index+1】=temp
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/953767.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号