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]+" ");
}
}
}