码迷,mamicode.com
首页 > 编程语言 > 详细

数组的插入和删除的算法运用

时间:2019-04-17 21:00:12      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:表示   i+1   main   数组   lse   turn   变量   delete   --   

   输入五个歌曲名,按首字母进行依次升幂排序

   输入数字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+‘\t‘);
                    }
                }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+‘\t‘);
                    }
                    
                    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("找不到相应歌曲"+‘\t‘);
                }
                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+‘\t‘);
                    }
                    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(‘\n‘);
        for(String i:music){
            System.out.print(i+‘\t‘);
        }
        System.out.print(‘\n‘);
        byte w=0;
        byte over=1;
        for(int i=0;i<6;){
        
        System.out.print("输入1数字增加一首歌曲名"+‘\t‘);
        System.out.print("输入2数字删除一首歌曲名"+‘\t‘);
        System.out.print("输入0退出"+‘\t‘);
        System.out.print(‘\n‘);
        w = sc.nextByte();
        switch(w){   //输入1表示增加一首歌曲
            case 1:
                System.out.println("请输入歌曲名"+‘\t‘);
                    music=index_add(music);//music 引用方法返回的数组地址
                break;
            case 2:  //输入2数字删除一首歌曲名
                System.out.println("请输入歌曲名"+‘\t‘);
                
                    music=index_delete(music);//music 引用方法返回的数组地址
                break;
            case 0:
                System.out.println("再次输入0结束操作");
                over=sc.nextByte();  //真正的退出
                break;
        }
        
        if(over==0){
            break;
            }
        }
    }
}

数组的插入和删除的算法运用

标签:表示   i+1   main   数组   lse   turn   变量   delete   --   

原文地址:https://www.cnblogs.com/dedema/p/10726037.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!