1. 程式人生 > >數組的常用算法問題

數組的常用算法問題

反轉 span size 簡單選擇排序 分區 工具 pos 快速排序 最大

1.求數組元素的最大值、最小值、和、平均數

2.數組的復制和反轉

情況1:


情況2:(如何實現復制)


數組的反轉:
// 數組元素的反轉
// 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;
// }
for (int x = 0, y = arr.length - 1; x < y; x++, y--) {
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}

拓展:String str = "abcdefg";

數組的排序:
插入排序
直接插入排序、折半插入排序、Shell排序

交換排序
冒泡排序、快速排序(或分區交換排序)

選擇排序
簡單選擇排序、堆排序

歸並排序

基數排序


// 使用冒泡排序使數組元素從小到大排列
// 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;


// }
// }
// }
// //使用直接選擇排序使數組元素從小到大排列
// for(int i = 0; i < arr.length - 1; i++){
// int t = i;//默認i處是最小的
// for(int j = i;j < arr.length;j++){
// //一旦在i後發現存在比其小的元素,就記錄那個元素的下角標
// if(arr[t] > arr[j]){
// t = j;
// }
// }
// if(t != i){
// int temp = arr[t];
// arr[t] = arr[i];
// arr[i] = temp;
// }
// }

還可以調用:Arrays工具類:Arrays.sort(arr);

數組的常用算法問題