给定数值冒泡排序(升降)

 


主页面
package com.example.lx_maopao;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import java.io.Console;
//交换排序的一种,稳定但次数较多,每次只能移动一个位置
//从数组中第一个数开始,依次与下一个数比较并次交换比自己小的数,
// 直到最后一个数。如果发生交换,则继续下面的步骤,如果未发生交换,
// 则数组有序,排序结束,此时时间复杂度为O(n);
// 每一轮”冒泡”结束后,最大的数将出现在乱序数列的最后一位。重复步骤
package com.example.lx_maopao;


import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;


import java.io.Console;
//交换排序的一种,稳定但次数较多,每次只能移动一个位置
//从数组中第一个数开始,依次与下一个数比较并次交换比自己小的数,
// 直到最后一个数。如果发生交换,则继续下面的步骤,如果未发生交换,
// 则数组有序,排序结束,此时时间复杂度为O(n);
// 每一轮”冒泡”结束后,最大的数将出现在乱序数列的最后一位。重复步骤
public class MainActivity extends AppCompatActivity implements View.OnClickListener {


    private int data[] = {6,3,7,4,8,2,9,2,0,1,5};
    private TextView tv;
    private Button btn1;
    private Button btn2;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = findViewById(R.id.tv);
        btn1 = findViewById(R.id.btn1);
        btn2 = findViewById(R.id.btn2);
        btn1.setOnClickListener(this);
        btn2.setOnClickListener(this);
    }


    //点击方法
    @Override
    public void onClick(View v) {
        //使用switch判断id,根据点击的id进行操作
        switch (v.getId()){
            //冒泡升序按钮
            case R.id.btn1:
                //升序
                for (int i = 0; i < data.length - 1; i++){
                    for (int j = 0; j < data.length - i - 1;j++){
                        //判断是否为升序排列
                        if (data[j] > data[j+1]){
                            //定义一个int值进行赋值
                            int temp = data[j];
                            //小的数值放前面
                            data[j] = data[j+1];
                            //然后让大的数值放后面
                            data[j+1] = temp;
                        }
                    }
                }
                //使用循环log打印
                for (int i = 0; i < data.length; i++){
                    //打印数组
                    Log.i("zzz", data[i]+"");
                }
                //把数组转换为字符串形式
               String s = toString(data);
                //赋值
                tv.setText(s);
                break;
            case R.id.btn2:
                //降序
                for (int i = 0; i < data.length - 1; i++){
                    for (int j = 0; j < data.length - i - 1;j++){
                        //判断是否为降序排列
                        if (data[j] < data[j+1]){
                            //定义一个int值进行赋值
                            int temp = data[j];
                            //大的数值放前面
                            data[j] = data[j+1];
                            //小的数值放后面
                            data[j+1] = temp;
                        }
                    }
                }
                //进行数组的类型转换
                String s1 = toString(data);
                //把转换的数值在textview上展示出来
                tv.setText(s1);
                //循环打印log日志
                for (int i = 0; i < data.length; i++){
                    //打印数组
                    Log.i("zzz", data[i]+"");
                }
                break;
        }
    }


    //定义一个方法,把int型数组转换为String类型
    private String toString(int[] data) {
        //定义一个字符串
        String ss = "";
        //循环遍历数组中的数据
        for (int i = 0; i < data.length; i++){
            //利用循环得到数组中的每一个数据,并改变数值类型
            String sl = String.valueOf(data[i]);
            //添加逗号并进行判断最后一个数后面没有逗号
            if (i!=data.length-1){
                sl=sl+",";
            }
            //把得到的每一个转换过得数值放到字符串ss中,以便于显示
            ss+=sl;
        }
        //返回字符串
        return ss;
    }
}

 

布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.lx_maopao.MainActivity">
    <Button
        android:layout_marginTop="60dp"
        android:layout_gravity="center"
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="冒泡排序正序"
        android:id="@+id/btn1"/>
    <TextView
        android:layout_marginTop="60dp"
        android:layout_gravity="center"
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="6,3,7,4,8,2,9,2,0,1,5"
        android:id="@+id/tv"
        />
    <Button
        android:layout_marginTop="60dp"
        android:layout_gravity="center"
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="冒泡排序倒序"
        android:id="@+id/btn2"/>

</LinearLayout>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值