数据结构排序——插入排序(JAVA)
2018-02-02 17:20
197 查看
插入排序是数据结构的排序算法中最简单,最容易理解的排序算法!
小编第一个接触排序的算法就是插入排序啦!
现在一起来探讨下插入排序的过程吧!
还记得有一种游戏风靡万千骚年的童年,它令多少赌徒血本无归,令多少实在的人嗤之以鼻,那就是——
扑克牌是我们日常最熟悉的一种娱乐工具,还记得我们打牌的时候整理顺序的过程吗?
让小编给大家场景再现吧!
当当当当!你运气好,第一张竟然摸到了大王K,激动呀!
然后继续摸牌,第二张你摸到了 4,此时,你会用4跟K比较,看谁大(很明显,4<K),然后把4放在前面,K往后移一位。
继续摸牌,你摸到了第三张牌是3,此时,你会先将3按序跟K比较,K>3,将k后移一位,继续跟4比较,4>3然后将4后移,最后插入到4的前面。。。。
好啦,插入排序就这么搞定啦!!!
现在来分析下JAVA代码吧!
1. 先定义一个数组R[],用来存储排好的数
2.若此时你手上的牌有n张,定义一个变量i,用来遍历已经有的n张牌。
3.定义一个j变量,用来比较待插入的牌R[i],以及记录此时数组的位置(所以j=i-1)
4.当原有的数R[i](此处将R[i]暂存到temp)大于要插入的数R[j](即 R[i]>R[j]),并且此时j的位置是合法的(j>=0)
时,将比待插大的数后移一位,R[j+1]=R[j],然后 j--.继续判断条件。直到遇到的数比自己小,或者比较到末尾了,跳出循环,将待插的R[i]放在R[j+1]处。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
import java.util.Scanner;
public class CrPx {
public static void zjpx(int R[],int n){
int i,j = 0,temp = 0;
for(i=1;i<n;++i)
{ temp=R[i];
j=i-1;
while(j>=0&&temp<R[j])
{
R[j+1]=R[j];
--j;
}
R[j+1]=temp;}
for(i=0;i<n;i++)
{
System.out.print(R[i]+" ");
}}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int R[]=new int
;
for(int i=0;i<n;i++)
{R[i]=sc.nextInt();}
zjpx(R,n);}}
------------------------------------------------------------------------------------------------------------------
搞定!
小编第一个接触排序的算法就是插入排序啦!
现在一起来探讨下插入排序的过程吧!
还记得有一种游戏风靡万千骚年的童年,它令多少赌徒血本无归,令多少实在的人嗤之以鼻,那就是——
扑克牌是我们日常最熟悉的一种娱乐工具,还记得我们打牌的时候整理顺序的过程吗?
让小编给大家场景再现吧!
当当当当!你运气好,第一张竟然摸到了大王K,激动呀!
然后继续摸牌,第二张你摸到了 4,此时,你会用4跟K比较,看谁大(很明显,4<K),然后把4放在前面,K往后移一位。
继续摸牌,你摸到了第三张牌是3,此时,你会先将3按序跟K比较,K>3,将k后移一位,继续跟4比较,4>3然后将4后移,最后插入到4的前面。。。。
好啦,插入排序就这么搞定啦!!!
现在来分析下JAVA代码吧!
1. 先定义一个数组R[],用来存储排好的数
2.若此时你手上的牌有n张,定义一个变量i,用来遍历已经有的n张牌。
3.定义一个j变量,用来比较待插入的牌R[i],以及记录此时数组的位置(所以j=i-1)
4.当原有的数R[i](此处将R[i]暂存到temp)大于要插入的数R[j](即 R[i]>R[j]),并且此时j的位置是合法的(j>=0)
时,将比待插大的数后移一位,R[j+1]=R[j],然后 j--.继续判断条件。直到遇到的数比自己小,或者比较到末尾了,跳出循环,将待插的R[i]放在R[j+1]处。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
import java.util.Scanner;
public class CrPx {
public static void zjpx(int R[],int n){
int i,j = 0,temp = 0;
for(i=1;i<n;++i)
{ temp=R[i];
j=i-1;
while(j>=0&&temp<R[j])
{
R[j+1]=R[j];
--j;
}
R[j+1]=temp;}
for(i=0;i<n;i++)
{
System.out.print(R[i]+" ");
}}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int R[]=new int
;
for(int i=0;i<n;i++)
{R[i]=sc.nextInt();}
zjpx(R,n);}}
------------------------------------------------------------------------------------------------------------------
搞定!
相关文章推荐
- java数据结构之插入排序(直接插入排序、折半插入排序、希尔排序)
- java数据结构之插入排序(选择排序(直接选择排序、堆排序))
- 算法和数据结构-排序-插入排序(Java)
- 数据结构--排序系列(插入排序,希尔排序,堆排序)Java代码实现
- Java数据结构之插入排序与选择排序的图示对比
- [Java数据结构]简单排序之插入排序
- 算法和数据结构-选择排序、插入排序及希尔排序 java实现
- Java基本排序(插入排序,冒泡排序,选择排序)
- 数据结构与算法——插入排序(Java实现)
- java实现冒泡排序,插入排序,选择排序,快速排序
- 算法系列(二)冒泡排序、选择排序、插入排序和希尔排序(Java实现)
- 《数据结构--排序》之插入排序
- 【python】python数据结构(六)——排序:插入排序
- java实现冒泡排序,选择排序,插入排序,快速排序(简洁版)及性能测试
- 冒泡排序、选择排序、插入排序、快速排序算法的时间性能分析(java实现)
- java数据结构排序之堆排序算法实现
- [Java]数组排序-选择排序 冒泡排序 插入排序
- Java 排序 快速排序 冒泡排序 选择排序 插入排序
- Java排序之插入排序
- Java分别实现冒泡排序、插入排序、快速排序、选择排序、交换排序