2020-09-01(数组的增删改查和冒泡,选择排序)

package demo;

import java.util.Scanner;

/**
 * CRUD 增查改删 (creat,retrieve,update,delete)
 * 所以接下来的讨论都是基于数组长度无限长的前提去讨论
 * @author WDD 
 */

public class CreatDemo {
	public static void main(String[] args) {
		// 先动态实例化一个数组 存放姓名
		String[] names = new String[100];
		names[0] = "张三";
		names[1] = "李四";
		names[2] = "王五";
		names[3] = "赵六";
		names[4] = "孙七";
		for (int i = 0; i < names.length; i++) {
			if (names[i] == null) {
				break;
			}
			System.out.print(names[i] + "  ");
		}
		System.out.println();
		//用户输入要在谁的后面增加一个名字,然后输入要增加的名字,之后打印出增加后的数组
		System.out.println("***********增加***********");
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入要在谁的后面增加一个名字:");
		String name = sc.next();
		
		//判断这个人是否存在,是否可以增加
		int n = 0;//创建一个常量,接受要在谁的名字后面增加的下标
		for (int i = 0; i < names.length; i++) {
			if(names[i] == null) {
				System.out.println("您输入的有误,不存在此用户,无法增加,程序结束。");
				sc.close();
				return;
			} else if(names[i].equals(name)) {
				n = i;
				break;
			}
		}
		
		System.out.println("请输入您要增加的名字:");
		String addName = sc.next();
		
		//从最后一个姓名开始,往后覆盖,然后把空出来的n这个位置赋值成要增加的姓名
		int m = 0;//创建一个变量,记录最后一个姓名的位置
		for (int i = 0; i < names.length; i++) {
			if(names[i] == null) {
				m = i-1;
				break;
			}
		}
		
		//开始往后面覆盖,空出一个位置,把addName插入进去
		for (int i = m; i > n; i--) {
			names[i+1] = names[i];
		}
		names[n+1] = addName;
		
		//打印出增加后的数组
		for (int i = 0; i < names.length; i++) {
			if (names[i] == null) {
				break;
			}
			System.out.print(names[i] + "  ");
		}
		sc.close();
	}

}
package demo;

import java.util.Scanner;

/**
 * CRUD
 * 增查改删 (creat,retrieve,update,delete)
 * @author WDD
 * 所以接下来的讨论都是基于数组长度无限长的前提去讨论
 */

public class DeleteDemo {
	public static void main(String[] args) {
		//先动态实例化一个数组 存放姓名
		String[] names = new String[100];
		names[0] = "张三";
		names[1] = "李四";
		names[2] = "王五";
		names[3] = "赵六";
		names[4] = "孙七";
		for (int i = 0; i < names.length; i++) {
			if (names[i] == null) {
				break;
			}
			System.out.print(names[i]+"  ");
		}
		System.out.println();
		
		//用户输入要删除的姓名,然后再打印删除后的数组
		System.out.println("*************刪除*************");
		Scanner sc = new Scanner(System.in);
		System.out.println("输入要删除的姓名:");
		String deleteName = sc.next();
		
		//遍历一遍 查找出要删除姓名的下标
		int n = 0;//创建一个变量 接受要删除姓名的下标
		for (int i = 0; i < names.length; i++) {
			if(names[i] == null) {
				System.out.println("您输入的有误,没有此人,无法修改,程序结束。");
				sc.close();
				return;
			} else if (names[i].equals(deleteName)) {
				n = i;
				break;
			}
		}
		
		//要删除下标为n的内容,所以从n开始,把下标为n+1的的内容赋给下标为n的数组
		for (int i = n; i < names.length; i++) {
			if(names[i] == null) {
				break;
			} else {
				names[i] = names[i+1];
			}
		}
		
		//打印删除后的数组
		for (int i = 0; i < names.length; i++) {
			if (names[i] == null) {
				break;
			}
			System.out.print(names[i]+"  ");
		}
		sc.close();
	}
}
package demo;

import java.util.Scanner;

/**
 * CRUD 增查改删 (creat,retrieve,update,delete)
 * 所以接下来的讨论都是基于数组长度无限长的前提去讨论
 * @author WDD 
 */

public class UpdateDemo {
	public static void main(String[] args) {
		// 先动态实例化一个数组 存放姓名
		String[] names = new String[100];
		names[0] = "张三";
		names[1] = "李四";
		names[2] = "王五";
		names[3] = "赵六";
		names[4] = "孙七";
		for (int i = 0; i < names.length; i++) {
			if (names[i] == null) {
				break;
			}
			System.out.print(names[i] + "  ");
		}
		System.out.println();
		System.out.println("**********修改***********");

		// 用户先输入要修改的名字,然后再输入修改后的名字
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入要修改的名字:");
		String anteriorName = sc.next(); // 要修改的名字

		// 判断是否存在这个人 (也就相当于查找)
		for (int i = 0; i < names.length; i++) {
			if (names[i] == null) {
				System.out.println("您输入的有误,没有此人!");
				sc.close();
				return;
			} else if (names[i].equals(anteriorName)) {
				break;
			}
		}
		System.out.println("请输入修改后的名字:");
		String afterName = sc.next(); // 修改后的名字

		// 把要修改的名字替换成修改后的名字
		for (int i = 0; i < names.length; i++) {
			if (names[i] == null) {
				break;
			} else if (names[i].equals(anteriorName)) {
				names[i] = afterName;
			}
		}

		// 打印修改后的名字数组
		for (int i = 0; i < names.length; i++) {
			if (names[i] == null) {
				break;
			}
			System.out.print(names[i] + "  ");
		}
		System.out.println();
		sc.close();
	}
}
package demo;

import java.util.Scanner;

/**
 * CRUD
 * 增查改删 (creat,retrieve,update,delete)
 * @author WDD
 * 所以接下来的讨论都是基于数组长度无限长的前提去讨论
 */

public class RetrieveDemo {
	public static void main(String[] args) {
		//先动态实例化一个数组 存放姓名
		String[] names = new String[100];
		names[0] = "张三";
		names[1] = "李四";
		names[2] = "王五";
		names[3] = "赵六";
		names[4] = "孙七";
		for (int i = 0; i < names.length; i++) {
			if (names[i] == null) {
				break;
			}
			System.out.print(names[i]+"  ");
		}
		//查找输入的姓名,有则返回查有此人,并打印此人的下标;无则返回查无此人
		System.out.println();
		System.out.println("*********查找***********");
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入要查找的姓名:");
		String name = sc.next();
		for (int i = 0; i < names.length; i++) {
			if (names[i] == null) {
				System.out.println("查无此人!");
				break;
			}else if (names[i].equals(name)) {
				System.out.println("查有此人!此人的下标为:"+i);
				break;
			}
		}
		
		sc.close();		
	}
}
package demo;

/**
 * 
 * 冒泡排序
 * 在要排序的一组数中,对当前还未排好序的范围内的全部数,
 * 自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。
 * 即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
 * @author WDD
 *
 */

public class BubbleSortDemo {
	public static void main(String[] args) {
		int[] arr = {15,3,25,6,29,6,16};
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i]+" ");
		}
		
		for (int i = 0; i < arr.length - 1; i++) {     //控制泡泡
			for (int j = 0; j < arr.length - 1 - i; j++) {  //进行比较确定要不要换位
				if (arr[j] > arr[j+1]) {
					int temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}
		}
		System.out.println();
		System.out.println("********************");
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i]+" ");
		}
	}

}
package demo;

/**
 * 选择排序
 *  选择排序的核心思想就是总是用一个值和其他的值依次比较,
 *	比较完之后,这个值就是最值
 *	选择第0个位置和其他的值进行比较
 * @author WDD
 *
 */
public class SelectionSortDemo {
	public static void main(String[] args) {
		int[] arr = {15,3,25,6,29,6,16};
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i]+" ");
		}
		for (int i = 0; i < arr.length - 1; i++) {
			for (int j = i + 1; j < arr.length; j++) {
				if (arr[i] > arr[j]) {
					int temp = arr[i];
					arr[i] = arr[j];
					arr[j] = temp;
				}
			}
		}
		System.out.println();
		System.out.println("******选择排序******");
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i]+" ");
		}
		
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值