数组排序

一、选择排序

选择排序:每一轮找到最小的元素,放在最前面

  1. 原理
    • 将数组中每个元素与第一个元素比较,如果这个元素小于第一个元素,则交换这两个元素
    • 循环第 1 条规则,找出最小元素,放于第 1 个位置
    • 经过 n-1 轮比较完成排序
    简单而言,每轮都找到最小的放到前面。举例:{8 , 2 , 3 , 7 , 1}的排序过程如下所示:
    数组: ary={8 , 2 , 3 , 7 , 1}
    第 1 轮: ary={1 | 8 , 3 , 7 , 2}
    第 2 轮: ary={1 , 2 | 8 , 7 , 3}
    第 3 轮: ary={1 , 2 , 3 | 8 , 7}
    第 4 轮: ary={1 , 2 , 3 , 7 | 8}
    第 5 轮: ary={1 , 2 , 3 , 7 | 8}

  2. 过程分析
    • i 代表第一个数据的位置
    • j 代码后部每一个数据的位置
    在这里插入图片描述
    备注:
    • i 的范围是: 0 ~ <ary.length - 1
    • j 的范围是: i+1 ~ <ary.length
    • 交换步骤(ary[i]<->ary[j])的代码如下:

	if(ary[i]>ary[j]){
		int temp = ary[i];
		ary[i]=ary[j]; 
		ary[j]=temp; 
	} 
  1. 代码
    在这里插入图片描述

二、冒泡排序

冒泡排序:比较相邻的两个元素,小的放前面

  1. 原理
    • 比较相邻的元素,将小的放到前面。
    冒泡排序举例:{8 , 2 , 3 , 7 , 1}的排序过程如下所示:
    ary={8,2,3,7,1}
    ary={2,8,3,7,1}
    ary={2,3,8,7,1}
    ary={2,3,7,8,1}
    ary={2,3,7,1|8}
    ary={2,3,7,1|8}
    ary={2,3,7,1|8}
    ary={2,3,1|7,8}
    ary={2,3,1|7,8}
    ary={2,1|3,7,8}
    ary={1,2,3,7,8}

  2. 过程分析
    • i 代表次数
    • j 代表比较位置
    在这里插入图片描述
    备注:
    • i 的取值范围是: i = 0 ~ <ary.length-1
    • j 的取值范围是: j = 0 ~ <ary.length - i -1
    • 交换步骤伪代码如下:

		if([j]>[j+1]){ 
			[j]<->[j+1] 
		} 
  1. 代码
    在这里插入图片描述

三、插入排序

插入排序:将数组分成两个部分,后一部分的元素逐个与前一部分每个比较,在合理位置插入

  1. 原理
    在这里插入图片描述

  2. 过程分析
    • temp 代表取出待插入的元素
    • i 代表后组待插入元素的位置
    • j 代表前组每个元素的位置
    在这里插入图片描述
    备注:
    • i 的取值范围是: i=1 ~ <ary.length i++
    • j 的取值范围是: j= i-1 ~ >=0, j-- j–
    • 伪代码如下:

	temp = [i];
	if (temp<[j]) { 
		[j]->[j+1]  	//移动 
	} else { 
		 break j; 
	} 
	temp->[j+1];  	//插入 
  1. 代码
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值