6-4 顺序表中相邻元素交换将最大值移到最后(Java语言描述)

该博客介绍了一个Java程序,用于将非空顺序表中的最大元素通过相邻元素交换的方式移动到列表末尾。提供的算法实现了这一功能,并在测试样例中展示了正确操作。输入一组整数,程序会将最大值移到最后并输出调整后的顺序表。

6-4 顺序表中相邻元素交换将最大值移到最后(Java语言描述) (12 分)
设计一个算法,通过相邻两个元素的交换的方法,将非空顺序表L中的最大元素移动到最后(最大元素唯一)

函数接口定义:

方法接口
public void move()

裁判测试程序样例:


import java.util.Scanner;
  class SqList
{
     int  [] listElem;
     int curLen;

    public SqList( )  // 创建n个元素构造的顺序表
    {
        Scanner sc = new Scanner(System.in);
        this.listElem = new int[100];
        int n = sc.nextInt();
        for(int i = 0 ; i<n ;i++ ) 
        {
                this.listElem[i] = sc.nextInt();                
        }        
        this.curLen = n;
    }

    //输出所有元素 
    public void display()
    {
        int i;
        for( i = 0 ; i <this.curLen ; i++)
        {
            System.out.print( this.listElem[i]+" ");
        }
    }
    /* 请在这里填写答案 */

}

public class Main{
    public static void main(String args[]){        
        SqList L = new SqList( );    
        L.move();
        L.display();
    }
}

输入样例:
输入一行n+1个整数 ,第一个是线性表长度,接下来的n个整数是线性表的元素。

5 2 1 7 4 3 
结尾无空行

输出样例:

1 2 4 3 7 
结尾无空行

答案:

public void move(){
    int k = 0;
    for(int  i = 1;i<curLen;i++)
        if(listElem[k]<listElem[i])
            k = i;
    int p = listElem[k];
    for(int i = 0;i<curLen-1;i++)
        for(int h = i;h<curLen-1;h++)
        {
            if(listElem[h]>listElem[h+1]){
                int b  = listElem[h];
                listElem[h] = listElem[h+1];
                listElem[h+1] = b;
            }
            if(listElem[curLen-1]==p)
                return ;
        }
}


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值