数组一切操作

来源:互联网 发布:python自然语言分析 编辑:程序博客网 时间:2024/06/02 04:15
public class MyArrayDemo {
// 遍历


/**
* @author Zw
* @param 数组遍历操作
*/
public void getInfo(int[] arr) {
String str = "[";
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
str += arr[i];
break;
}
str += arr[i] + ",";
}
str += "]";
System.out.println(str);
}


// 求最大值
/**
* @author Zw
* @param 求最大值
* @return 返回最大值
*/
public int getMax(int[] arr) {
int max = arr[0];
for (int i = 0; i < arr.length; i++) {
if (max < arr[i]) {
max = arr[i];
}
}
return max;
}


// 求最小值
/**
* @author Zw
* @param 求最小值
* @return 返回一个最小值
*/
public int getMin(int[] arr) {
int min = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
return min;
}


// 冒泡排序
/**
* 冒泡排序

* @author zw
* @param 冒泡排序
*/
public void getSort(int[] arr) {
// 外层循环拿出一个元素
for (int i = 0; i < arr.length; i++) {
// 内层循环拿出全部的元素
for (int j = 0; j < arr.length - 1; j++) {
// 冒泡排序 因为n>n+1模式
if (arr[j] > arr[j + 1]) { // 拿出前一个元素跟后一个元素做比较
// 交换
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}


// 数组去重复
/**
* @author ZW
* @param 数组去重复操作
* @return 返回一个新数组 分析 数组去重复操作 需要一个新数组 新下标 和标识府
*/
public int[] getRepeat(int[] arr) {
int[] temp = new int[arr.length]; // 定义一个新数组
int count = 0;// 下标
boolean isfalse = false; // 标识府
for (int i = 0; i < arr.length; i++) { // 拿出第一个元素进行比较
for (int j = 0; j < i; j++) { // 拿出全部的元素
if (temp[j] == arr[i]) { // 判断是否相等
isfalse = true; // 改变标识府
break; // 结束本次循环
} else {
isfalse = false; // 改变标识府
}
}
if (!isfalse) { // 判断是否为假
temp[count++] = arr[i]; // 为新数组赋值操作
}
}
return temp;
}


/**
* 根据索引查找数字

* @author Zw
* @param 根据索引查找数字
* @return 找到了就返回这个数值 没有找到则返回-1
*/
public int getArr(int[] arr, int index) {
// 判断索引是否合法
if (index < 0 || index > arr.length) {
return -1;
} else { // 找到就返回这个元素
return arr[index];
}
}


/**
* 选择排序 拿到第零的下标元素去跟后面的元素进行比较

* @author Zw
* @param 选择排序
*            拿到第零的下标元素去跟后面的元素进行比较
*/
public void getXuanZeSort(int[] arr) {
// 外循环拿出第一个元素
for (int i = 1; i < arr.length; i++) {
// 内循环拿出每一个元素进行比较一遍
for (int j = i; j < arr.length; j++) {
if (arr[i - 1] > arr[j]) { // 假设下标为零的元素 是否大于后面的 如果大于则交换位置
// 交换位置
int temp = arr[i - 1];
arr[i - 1] = arr[j];
arr[j] = temp;
}
}
}
}


// 二分查找
/**
* 二分查找法

* @author Zw
* @param 二分查找法
*            找到了则把下标返回过去
*/
public int getFenSort(int[] arr, int k) {
// 拿到最小下标
int min = arr[0];
// 拿到最大下标
int max = arr.length - 1;
while (min <= max) { // 判断你是否比我小
int mid = arr.length / 2; // 拿到中间索引
int midValus = arr[mid]; // 拿到中间元素
if (k > midValus) {
min = mid;// 往右移动
} else if (k < midValus) {
max = mid; // 往左移动
} else if (k == midValus) {
return mid; // 找到了
}


}
return -1; // 没有找到
}


// 奇偶分离
/**
* 奇数放左边  偶数放右边
* @param 奇数放左边  偶数放右边
* @return 返回一个新的数组
* @author Zw
* */
public int[] getJiOrUo(int[] arr) {


for (int i = 0; i < arr.length; i++) {
for (int j = i; j < arr.length; j++) {
if (arr[j] % 2 != 0) {
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}


return arr;
}
    /**
     * @author Zw
     * 反转数组
     * @param 
     * */
public void getReversal(int[] arr) {
for (int i = 0; i < arr.length / 2; i++) {
               int temp=arr[i];
               arr[i]=arr[arr.length-1-i];
               arr[arr.length-1-i]=temp;
}
}


}
1 0