J2EE常用工具類 陣列操作

2021-08-30 07:40:12 字數 3121 閱讀 1015

package cn.org.jshuwei.j2ee.util;

/***

* 陣列操作的工具類(以int型陣列為例)

* *排序演算法的分類如下:

1.插入排序(直接插入排序、折半插入排序、希爾排序);

* 2.交換排序(冒泡泡排序、快速排序);

3.選擇排序(直接選擇排序、堆排序);

4.歸併排序;

5.基數排序。

* *關於排序方法的選擇:

(1)若n較小(如n≤50),可採用直接插入或直接選擇排序。

* (2)若檔案初始狀態基本有序(指正序),則應選用直接插人、冒泡或隨機的快速排序為宜;

* (3)若n較大,則應採用時間複雜度為o(nlgn)的排序方法:快速排序、堆排序或歸併排序。

* * @author huwei(jshuwei.org.cn)

* @since 1.1

* */

public class arrayutil

/*** 氣泡排序 方法:相鄰兩元素進行比較 效能:比較次數o(n^2),n^2/2;交換次數o(n^2),n^2/4

* * @since 1.1

* @param source

* 需要進行排序操作的陣列

* @return 排序後的陣列

*/public static int bubblesort(int source) }}

return source;

}/**

* 直接選擇排序法 方法:每一趟從待排序的資料元素中選出最小(或最大)的乙個元素, 順序放在已排好序的數列的最後,直到全部待排序的資料元素排完。

* 效能:比較次數o(n^2),n^2/2 交換次數o(n),n

* 交換次數比氣泡排序少多了,由於交換所需cpu時間比比較所需的cup時間多,所以選擇排序比氣泡排序快。

* 但是n比較大時,比較所需的cpu時間佔主要地位,所以這時的效能和氣泡排序差不太多,但毫無疑問肯定要快些。

* * @since 1.1

* @param source

* 需要進行排序操作的陣列

* @return 排序後的陣列

*/public static int selectsort(int source) }}

return source;

}/**

* 插入排序 方法:將乙個記錄插入到已排好序的有序表(有可能是空表)中,從而得到乙個新的記錄數增1的有序表。 效能:比較次數o(n^2),n^2/4

* 複製次數o(n),n^2/4 比較次數是前兩者的一般,而複製所需的cpu時間較交換少,所以效能上比氣泡排序提高一倍多,而比選擇排序也要快。

* * @since 1.1

* @param source

* 需要進行排序操作的陣列

* @return 排序後的陣列

*/public static int insertsort(int source)

}return source;

}/**

* 快速排序 快速排序使用分治法(divide and conquer)策略來把乙個序列(list)分為兩個子串行(sub-lists)。 步驟為:

* 1. 從數列中挑出乙個元素,稱為 "基準"(pivot), 2.

* 重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面

* (相同的數可以到任一邊)。在這個分割之後,該基準是它的最後位置。這個稱為分割(partition)操作。 3.

* 遞迴地(recursive)把小於基準值元素的子數列和大於基準值元素的子數列排序。

* 遞迴的最底部情形,是數列的大小是零或一,也就是永遠都已經被排序好了

* 。雖然一直遞迴下去,但是這個演算法總會結束,因為在每次的迭代(iteration)中,它至少會把乙個元素擺到它最後的位置去。

* * @since 1.1

* @param source

* 需要進行排序操作的陣列

* @return 排序後的陣列

*/public static int quicksort(int source)

/*** 快速排序的具體實現,排正序

* * @since 1.1

* @param source

* 需要進行排序操作的陣列

* @param low

* 開始低位

* @param high

* 結束高位

* @return 排序後的陣列

*/private static int qsort(int source, int low, int high)

if (i < j)

while (i < j && source[i] < x)

if (i < j)

}source[i] = x;

qsort(source, low, i - 1);

qsort(source, i + 1, high);

}return source;

}/**

* 二分法查詢 查詢線性表必須是有序列表

* * @since 1.1

* @param source

* 需要進行查詢操作的陣列

* @param key

* 需要查詢的值

* @return 需要查詢的值在陣列中的位置,若未查到則返回-1

*/public int binarysearch(int source, int key) else if (key < source[mid]) else

}return -1;

}/**

* 反轉陣列

* * @since 1.1

* @param source

* 需要進行反轉操作的陣列

* @return 反轉後的陣列

*/public static int reverse(int source)

return source;

}}

java Array陣列常用工具類

比較兩個陣列去重複 有相同移除第乙個陣列中的相同值 比較兩個陣列去重複 有相同移除第乙個陣列中的相同值 public static object removerepeat object arr1,object arr2 比較兩個陣列是否有重複 比較兩個陣列是否有重複 public static bo...

常用工具類

本講內容 常用工具類 陸續更新 author administrator public static context context public void oncreate public static context getcontext 2 提供所有activity呼叫 基類 author ad...

常用工具類

reflectionutils objectutils public static void main string args 判斷兩個陣列是否相等 system.out.println arrays.equals arr,arr true 列印陣列 string s1 arrays.tostrin...