数组降序的情况下插入数据依然是降序
- 第1次推导
public class test {
public static void main(String[] args) {
int[] ints = {90, 80, 70};
int tmp = 85;
// 与第1个数比较时
// [0][1][2][]
if (tmp>ints[0]){
// 后移
for(int j=ints.length; j>0; j--){
ints[j]=ints[j-1];
}
// 长度++
// 插入位置0
ints[0]=tmp;
// 结束整个循环
// break;
}else { // 小于等于ints[0]
// 不成立则continue,进入下一轮比较
}
// 与第2个数比较时
// [0][1][2][]
if (tmp>ints[1]){
// 后移
for(int j=ints.length; j>1; j--){
ints[j]=ints[j-1];
}
// 长度++
// 插入位置1
ints[1]=tmp;
// 结束整个循环
// break;
}else { // 小于等于ints[1]
// 不成立则continue,进入下一轮比较
}
// 与第3个数比较时
// [0][1][2][]
if (tmp>ints[2]){
// 后移
for(int j=ints.length; j>2; j--){
ints[j]=ints[j-1];
}
// 长度++
// 插入位置1
ints[2]=tmp;
// 结束整个循环
// break;
}else { // 小于等于ints[2]
// 不成立则continue,进入下一轮比较
}
}
}
- 最终完善
/**
* 当tmp比最小的值还小时
* i < ints.length; 表示i<10
* 比较到最后时,tmp>ints[3],tmp>0
* 条件成立,则会执行ints[3]=tmp,执行成功
*/
public class test1 {
public static void main(String[] args) {
int[] ints = new int[10];
ints[0]=90;
ints[1]=80;
ints[2]=70;
int len=3;
int tmp = 70; // 要插入的数
// [90][80][70][]
// [0][1][2][]
for (int i = 0; i < ints.length; i++) {
if (tmp>ints[i]){
// 后移
for(int j=len; j>i; j--){
ints[j]=ints[j-1];
}
// 长度++
len++;
// 插入位置0
ints[i]=tmp;
// 结束整个循环
break;
}else { // 小于等于ints[0]
// 不成立则continue,进入下一轮比较
continue;
}
}
for (int i = 0; i < len; i++) {
System.out.println(ints[i]);
}
}
}
- 方式2
public class test2 {
public static void main(String[] args) {
int[] ints = new int[10];
ints[0]=90;
ints[1]=80;
ints[2]=70;
int len=3;
int tmp = 70; // 要插入的数
// [90][80][70][]
// [0][1][2][]
for (int i = 0; i < len; i++) {
if (tmp>ints[i]){
// 后移
for(int j=len; j>i; j--){
ints[j]=ints[j-1];
}
// 长度++
len++;
// 插入位置0
ints[i]=tmp;
// 结束整个循环
break;
}else { // 小于等于ints[0]
// 不成立则continue,进入下一轮比较
continue;
}
}
// 当插入的值比数组中最小的值还小时,插入到最后
if(tmp<=ints[len-1]){
ints[len]=tmp;
len++;
}
for (int i = 0; i < len; i++) {
System.out.println(ints[i]);
}
}
}
- 方式3
public class test3 {
public static void main(String[] args) {
int[] ints = new int[10];
ints[0]=90;
ints[1]=80;
ints[2]=70;
int len=3;
int tmp = 70; // 要插入的数
// [90][80][70][]
// [0][1][2][]
for (int i = 0; i < ints.length; i++) {
if (tmp>ints[i]){
// 后移
for(int j=len; j>i; j--){
ints[j]=ints[j-1];
}
}else { // 小于等于ints[0]
// 不成立则continue,进入下一轮比较
continue;
}
// 长度++
len++;
// 插入
ints[i]=tmp;
// 结束整个循环
break;
}
// 打印
for (int i = 0; i < len; i++) {
System.out.println(ints[i]);
}
}
}
- 方式4
/**
* 条件是 i < len;
* 当要插入的值是最小值时
* 比较到最后,tmp>ints[2],也就是tmp>70
* 条件不成立,直接跳出,最后还需要if判断
*/
public class test4 {
public static void main(String[] args) {
int[] ints = new int[10];
ints[0]=90;
ints[1]=80;
ints[2]=70;
int len=3;
int tmp = 70; // 要插入的数
// [90][80][70][]
// [0][1][2][]
for (int i = 0; i < len; i++) {
if (tmp>ints[i]){
// 后移
for(int j=len; j>i; j--){
ints[j]=ints[j-1];
}
}else { // 小于等于ints[0]
// 不成立则continue,进入下一轮比较
continue;
}
// 长度++
len++;
// 插入
ints[i]=tmp;
// 结束整个循环
break;
}
// 当插入的值比数组中最小的值还小时,插入到最后
if(tmp<=ints[len-1]){
ints[len]=tmp;
len++;
}
// 打印
for (int i = 0; i < len; i++) {
System.out.println(ints[i]);
}
}
}
数组升序的情况下插入数据依然是升序
- 方式1
/**
* 条件是 i < ints.length;
* 当插入的数比最大的数还大时
* 比较到最后,tmp<ints[3],tmp<0
* 条件不成立,所以最后还是要加if判断
*/
public class test1 {
public static void main(String[] args) {
int[] ints = new int[10];
ints[0]=60;
ints[1]=70;
ints[2]=80;
int len=3;
int tmp = 80; // 要插入的数
// [0][1][2][]
for (int i = 0; i < ints.length; i++) {
if (tmp<ints[i]){
// 后移
for(int j=len; j>i; j--){
ints[j]=ints[j-1];
}
// 长度++
len++;
// 插入位置0
ints[i]=tmp;
// 结束整个循环
break;
}else { // 大于等于ints[0]
// 不成立则continue,进入下一轮比较
continue;
}
}
// 当插入的值比数组中最大的值还大时,插入到最后
if(tmp>=ints[len-1]){
ints[len]=tmp;
len++;
}
// 打印
for (int i = 0; i < len; i++) {
System.out.println(ints[i]);
}
}
}
- 方式2
public class test2 {
public static void main(String[] args) {
int[] ints = new int[10];
ints[0]=60;
ints[1]=70;
ints[2]=80;
int len=3;
int tmp = 80; // 要插入的数
// [0][1][2][]
for (int i = 0; i < len; i++) {
if (tmp<ints[i]){
// 后移
for(int j=len; j>i; j--){
ints[j]=ints[j-1];
}
// 长度++
len++;
// 插入位置0
ints[i]=tmp;
// 结束整个循环
break;
}else { // 大于等于ints[0]
// 不成立则continue,进入下一轮比较
continue;
}
}
// 当插入的值比数组中最大的值还大时,插入到最后
if(tmp>=ints[len-1]){
ints[len]=tmp;
len++;
}
// 打印
for (int i = 0; i < len; i++) {
System.out.println(ints[i]);
}
}
}
- 方式3
/**
* 条件是 i < ints.length;
* 当要插入的值是最大值时
* 比较到最后,tmp<ints[3],也就是tmp<0
* 条件不成立,直接跳出,最后还需要if判断
*/
public class test3 {
public static void main(String[] args) {
int[] ints = new int[10];
ints[0]=60;
ints[1]=70;
ints[2]=80;
int len=3;
int tmp = 80; // 要插入的数
// [0][1][2][]
for (int i = 0; i < ints.length; i++) {
if (tmp<ints[i]){
// 后移
for(int j=len; j>i; j--){
ints[j]=ints[j-1];
}
}else { // 大于等于ints[0]
// 不成立则continue,进入下一轮比较
continue;
}
// 插入位置
ints[len]=tmp;
// 长度++
len++;
// 结束整个循环
break;
}
// 当插入的值比数组中最大的值还大时,插入到最后
if(tmp>=ints[len-1]){
ints[len]=tmp;
len++;
}
// 打印
for (int i = 0; i < len; i++) {
System.out.println(ints[i]);
}
}
}
- 方式4
/**
* 条件是 i < len;
* 当要插入的值是最大值时
* 比较到最后,tmp<ints[2],也就是tmp<80
* 条件不成立,直接跳出,最后还需要if判断
*/
public class test4 {
public static void main(String[] args) {
int[] ints = new int[10];
ints[0]=60;
ints[1]=70;
ints[2]=80;
int len=3;
int tmp = 80; // 要插入的数
// [0][1][2][]
for (int i = 0; i < len; i++) {
if (tmp<ints[i]){
// 后移
for(int j=len; j>i; j--){
ints[j]=ints[j-1];
}
}else { // 大于等于ints[0]
// 不成立则continue,进入下一轮比较
continue;
}
// 插入位置
ints[len]=tmp;
// 长度++
len++;
// 结束整个循环
break;
}
// 当插入的值比数组中最大的值还大时,插入到最后
if(tmp>=ints[len-1]){
ints[len]=tmp;
len++;
}
// 打印
for (int i = 0; i < len; i++) {
System.out.println(ints[i]);
}
}
}
标签:tmp,有序,int,++,len,插入,ints,数组
From: https://www.cnblogs.com/dogleftover/p/17737005.html