java编程排序算法实现方法 " />
排序是计算机程序设计中的一个基本问题,也是最常用的算法之一。在Java编程语言中,提供了多种排序算法,各种排序算法的复杂度和性能不同,因此在实际应用中需要根据具体情况进行选择。
一、冒泡排序法
冒泡排序,是一种简单的排序算法,它比较任何两个相邻的项,如果第一个比第二个大,就交换它们。一趟下来,可以将最大的数排到最后一位。因此,还需要进行n-1趟比较。
Java代码实现:
public static void bubbleSort(int[] arr){
int len = arr.length;
for(int i = 0 ; i < len - 1; i++){
for(int j = 0 ; j < len - 1 - i; j++){
if(arr[j] > arr[j+1]){
int temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
}
二、选择排序法
选择排序,每次都选择出最小值,放在序列的起始位置,然后再从剩下的序列中选择最小值,放在已排序序列的末尾。
Java代码实现:
public static void selectionSort(int[] arr){
int len = arr.length;
for(int i = 0 ; i < len - 1; i++){
int minIndex = i;
for(int j = i + 1 ; j < len ; j++){
if(arr[j] < arr[minIndex]){
minIndex = j;
}
}
int temp = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;
}
}
三、插入排序法
插入排序,将一个记录插入到已排序好的有序序列中,从而得到一个新的、记录数增加1的有序序列。
Java代码实现:
public static void insertionSort(int[] arr){
int len = arr.length;
int preIndex, current;
for(int i = 1; i < len; i++){
preIndex = i - 1;
current = arr[i];
while(preIndex >= 0 && arr[preIndex] > current){
arr[preIndex+1] = arr[preIndex];
preIndex--;
}
arr[preIndex+1] = current;
}
}
四、快速排序法
快速排序,是对冒泡排序的一种改进,基本思想是通过一趟排序将待排数据分成两部分,一部分比另一部分小,然后分别对这两部分进行快速排序,递归地进行,重复上述过程直到整个序列有序。
Java代码实现:
public static void quickSort(int[] arr,int left,int right){
if(left >= right) {
return;
}
int baseValue = arr[left];
int i = left;
int j = right;
while(i < j){
// 找到第一个比基准值小的数
while(i < j && arr[j] >= baseValue) j--;
if(i < j){
arr[i] = arr[j];
i++;
}
// 找到第一个比基准值大的数
while(i < j && arr[i] < baseValue) i++;
if(i < j){
arr[j] = arr[i];
j--;
}
}
arr[i] = baseValue;
quickSort(arr, left, i - 1);
quickSort(arr, i + 1, right);
}
五、归并排序法
归并排序,是利用分治思想将已有序的子序列合并得到完全有序的序列,从而完成排序的过程。合并的过程需要借助一个额外的数组。
Java代码实现:
public static void mergeSort(int[] arr,int left,int right,int[] temp){
if(left < right){
int mid = (left + right) / 2;
mergeSort(arr, left, mid, temp);
mergeSort(arr, mid + 1, right, temp);
merge(arr, left, mid, right, temp);
}
}
private static void merge(int[] arr,int left,int mid,int right,int[] temp){
int i = left;
int j = mid + 1;
int t = 0;
while(i <= mid && j <= right){
if(arr[i] <= arr[j]){
temp[t++] = arr[i++];
}else{
temp[t++] = arr[j++];
}
}
while(i <= mid){
temp[t++] = arr[i++];
}
while(j <= right){
temp[t++] = arr[j++];
}
t = 0;
while(left <= right){
arr[left++] = temp[t++];
}
}
以上就是Java编程语言中的五种排序算法,它们在不同的场景下有着不同的优劣,理解并掌握这些算法对于编程开发人员而言是必不可少的。在实际应用中,需要根据数据规模,数据特点以及要排序的时间要求等因素进行选择。
壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。
我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!
发表评论 取消回复