主页面
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>