美文网首页
算法的简单应用

算法的简单应用

作者: X亡口月贝凡 | 来源:发表于2019-06-11 14:03 被阅读0次

package com.demo.calculate;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

import java.util.Arrays;

public class MainActivity extends AppCompatActivity {
private int[] arr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
arr = new int[]{2,3,4,5,6,7,8,9};
findViewById(R.id.btn_add).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addElementToLast(11);
}
});
findViewById(R.id.btn_insert).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
insertElement(2,5);
}
});
findViewById(R.id.btn_delete).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
deleteElement(2);
}
});
findViewById(R.id.btn_lineSearch).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("tag",lineSearch(2)+"");
}
});
findViewById(R.id.btn_addQueue).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addQueue(10);
}
});
findViewById(R.id.btn_popQueue).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popQueue();
}
});
findViewById(R.id.btn_bubbleSort).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bubbleSort();
}
});
}

/**
 * 冒泡排序
 */
private void bubbleSort() {
    int[] arr = new int[]{3,2,5,7,4,1,0,8};
    for (int i = 0; i <arr.length-1 ; i++) {
        for (int j = 0; j <arr.length-1-i ; j++) {
            //交换位置
            if (arr[j]>arr[j+1]){
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
    Log.i("tag",Arrays.toString(arr));
}

/**
 * 出队
 */
private void popQueue() {
    if (arr.length==0){
        return;
    }
    int[] newArr = new int[arr.length-1];
    for (int i = 0; i <newArr.length ; i++) {
        newArr[i] = arr[i+1];
    }
    arr = newArr;
    Log.i("tag",Arrays.toString(arr));
}

/**
 *入队
 */
private void addQueue(int element) {
    int[] newArr = new int[arr.length+1];
    for (int i = 0; i <arr.length ; i++) {
        newArr[i] = arr[i];
    }
    newArr[arr.length] = element;
    arr = newArr;
    Log.i("tag",Arrays.toString(arr));
}
/**
 *线性查找
 */
private int lineSearch(int index) {
    for (int i = 0; i <arr.length ; i++) {
        if (arr[i] == index){
           return i;
        }
    }
    return -1;
}

/**
 *删除元素
 */
private void deleteElement(int index) {
    if (index<0 || index>arr.length-1){
        return;
    }
    int[] newArr = new int[arr.length-1];
    for (int i = 0; i <newArr.length ; i++) {
        if (i<index){
            newArr[i] = arr[i];
        }else{
            newArr[i] = arr[i+1];
        }
    }
    arr = newArr;
    Log.i("tag",Arrays.toString(arr));
}

/**
 * 往数组的末尾添加元素
 */
private void addElementToLast(int element) {
    int[] newArr = new int[arr.length+1];
    for (int i = 0; i <arr.length ; i++) {
        newArr[i] = arr[i];
    }
    newArr[arr.length] = element;
    arr = newArr;
    Log.i("tag", Arrays.toString(arr));
}
/**
 * 往数组的中间插入元素
 * @param index
 * @param element
 */
private void insertElement(int index, int element) {
    int[] newArr = new int[arr.length+1];
    if (index<0 || index>arr.length-1){
        return;
    }
    for (int i = 0; i <arr.length; i++) {
        if (i<index){
            newArr[i] = arr[i];
        }else{
            newArr[i+1] = arr[i];
        }
    }
    newArr[index] = element;
    arr = newArr;
    Log.i("tag",Arrays.toString(arr));
}

}

相关文章

  • 算法的简单应用

    package com.demo.calculate; import android.support.v7.app...

  • 遗传算法综述及简单应用实例

    遗传算法综述及简单应用实例

  • 关于算法的简单应用

    解决问题的步骤,方法 给你一个有序的数组: [-10,8,20,35,70,1000] find: 线性查找 fi...

  • Manacher算法简单应用

    题目: 给定一个字符串str1, 只能往str1的后面添加字符变成str2, 要求str2整体都是回文串且最短。举...

  • A*算法入门

    A*算法作为路径规划算法中应用最广泛实用的算法,由于A*算法的算法原理较为简单,网络上能够找到各种各样的学习资料,...

  • LeetCode 回溯专题 7:floodfill 解决一类经典

    掌握 floodfill 算法,更加深入体会深度优先遍历的应用。这个算法其实非常简单,属于基础的算法。解决的思路是...

  • ML- kNN(k近邻算法)

    算法特点背后思想简单,应用数学原理简单,效果好,而且可以说是在诸多ML算法中独有的不需要训练模型的算法。基本过程:...

  • 基于Dijkstra算法的最短路径问题求解

    摘 要 现实生活中许多数据的处理依赖于Dijkstra算法的应用,通过应用Dijkstra算法使复杂问题更加简单化...

  • GIF 与 LWZ

    在讲 LZW 在 GIF 中的应用前,有必要先简单的过一下 LZW 算法。 LZW算法又叫“串表压缩算法”就是通过...

  • 遗传算法的简单应用

    遗传算法采用概率化的寻优方法,在大范围内对解进行优化,不限于局部。遗传算法擅长解决全局最优化问题。基本过程可以是:...

网友评论

      本文标题:算法的简单应用

      本文链接:https://www.haomeiwen.com/subject/flqqfctx.html