数组的插入和删除的算法运用
Posted dedema
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组的插入和删除的算法运用相关的知识,希望对你有一定的参考价值。
输入五个歌曲名,按首字母进行依次升幂排序
输入数字1 可以插入
输入数字2可以删除
输入数字0可以退出
一个数组有序,添加一个元素后,数组依然有序。
一个数组有序,删除一个元素后,数组依然有序。
程序如下
import java.util.Scanner;
public class test03{
//申请一个整型类变量
static int number=6;
//申请一个类引用变量
static String[] music =new String[number];
//申请一个字符串用变量
static String M="000";
//插入一个字符串方法
public static String[] index_add(String [] MUSIC_0){
//记录一个位置变量 如果是负数这表示遍历完没有相应的位置放到最后
int al=-1; // 如果是正数表示有相应位置要插入
Scanner sc1 = new Scanner(System.in);
M = sc1.next();
//申请一个插入字符串用变量
System.out.println(number);
//申请字符串数组 number+1表示需要多申请一个字符串存放增加的变量
String[] M_new = new String[number+1];
//把之前歌名复制到新字符串数组
for(int i =0;i<number;i++){
M_new[i]=MUSIC_0[i];
}
//遍历歌名的首字符需要插入位置
for(int i=0;i<number;i++){
if(M.charAt(0)<=MUSIC_0[i].charAt(0)){
al=i;
break;
}
}
//如果是负数这表示遍历完没有相应插入的位置,放到最后
if(al<0){
M_new[number]=M;
for(String i:M_new)
{
System.out.print(i+‘ ‘);
}
}else{ // 如果是正数表示有相应位置要插入
for(int f=number;f>al;f-- ){
M_new[f]=M_new[f-1]; // 依次后移
}
M_new[al]=M;//插入
for(String i:M_new)
{
System.out.print(i+‘ ‘);
}
System.out.println();
}
number++; //数组增加一位
return M_new;//返回值
}
//删除一个字符串方法
public static String[] index_delete(String[] a){
//记录删除的位置
int al=-1;
Scanner sc1 = new Scanner(System.in);
M = sc1.next();
//遍历歌名的首字符需要删除位置
for(int f=0;f<number;f++){
if(a[f].charAt(0)==M.charAt(0))
{
al=f;
break;
}
}
//申请字符串数组 --number表示需要多申请一个字符串存放增加的变量
String[] M_new = new String[--number];
if(al<0){//
System.out.println("找不到相应歌曲"+‘ ‘);
}
else{
int j=0;
//删除一位字符串,重新复制到新的数组
for(int f=0;f<number;f++){
if(f==al)
{
j++;//删除位置 多加加一表示跳过复制
}
M_new[f]=a[j++];
}
for(String i:M_new)
{
System.out.print(i+‘ ‘);
}
System.out.println("删除成功");
}
return M_new;
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
for(int i=0;i<music.length;i++){
System.out.println("请输入第"+i+"歌曲名称");
music[i] = sc.next();
}
String a;
//每个字符串的首字母进行排序 冒泡排序
for(int j=0;j<music.length-1;j++){
for(int i=0; i<music.length-j-1;i++){
if(music[i].charAt(0)>music[i+1].charAt(0)){
a = music[i+1];
music[i+1]=music[i];
music[i]=a;
}
}
}
System.out.print(‘
‘);
for(String i:music){
System.out.print(i+‘ ‘);
}
System.out.print(‘
‘);
byte w=0;
byte over=1;
for(int i=0;i<6;){
System.out.print("输入1数字增加一首歌曲名"+‘ ‘);
System.out.print("输入2数字删除一首歌曲名"+‘ ‘);
System.out.print("输入0退出"+‘ ‘);
System.out.print(‘
‘);
w = sc.nextByte();
switch(w){ //输入1表示增加一首歌曲
case 1:
System.out.println("请输入歌曲名"+‘ ‘);
music=index_add(music);//music 引用方法返回的数组地址
break;
case 2: //输入2数字删除一首歌曲名
System.out.println("请输入歌曲名"+‘ ‘);
music=index_delete(music);//music 引用方法返回的数组地址
break;
case 0:
System.out.println("再次输入0结束操作");
over=sc.nextByte(); //真正的退出
break;
}
if(over==0){
break;
}
}
}
}
以上是关于数组的插入和删除的算法运用的主要内容,如果未能解决你的问题,请参考以下文章