<1>排序有哪些方法
java中8种基本数据类型标识符 " />

Java排序有哪些方法

Java中常用的排序方法有以下几种:

1. 冒泡排序

冒泡排序是一种简单的排序算法,其基本思路是通过相邻元素比较和交换,让较大的元素慢慢“浮”到数组的顶端,而较小的元素则沉到数组的底端。

它的核心代码如下:

```java

public void bubbleSort(int[] arr) {

int n = arr.length;

int temp;

for (int i = 0; i < n - 1; i++) {

for (int j = 0; j < n - i - 1; j++) {

if (arr[j] > arr[j + 1]) {

temp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = temp;

}

}

}

}

```

2. 选择排序

选择排序的思路是将数组分为已排序和未排序两个部分,每次找到未排序部分的最小值,将其放在已排序部分的末尾。

它的核心代码如下:

```java

public void selectionSort(int[] arr) {

int n = arr.length;

for (int i = 0; i < n - 1; i++) {

int minIndex = i;

for (int j = i + 1; j < n; j++) {

if (arr[minIndex] > arr[j]) {

minIndex = j;

}

}

int temp = arr[minIndex];

arr[minIndex] = arr[i];

arr[i] = temp;

}

}

```

3. 插入排序

插入排序的核心思想是将未排序的元素逐个插入到已排序的元素之中,以达到排序的目的。

它的核心代码如下:

```java

public void insertionSort(int[] arr) {

int n = arr.length;

for (int i = 1; i < n; i++) {

int temp = arr[i];

int j;

for (j = i - 1; j >= 0 && arr[j] > temp; j--) {

arr[j + 1] = arr[j];

}

arr[j + 1] = temp;

}

}

```

4. 希尔排序

希尔排序是插入排序的改进版,它将待排序的序列按照一定的间隔分组,对每个分组使用插入排序算法,不断缩小间隔直到为1,最后使用插入排序算法对整个序列进行排序。

它的核心代码如下:

```java

public void shellSort(int[] arr) {

int n = arr.length;

for(int gap = n / 2; gap > 0; gap /= 2) {

for (int i = gap; i < n; i++) {

int temp = arr[i];

int j = i - gap;

while (j >= 0 && arr[j] > temp) {

arr[j + gap] = arr[j];

j -= gap;

}

arr[j + gap] = temp;

}

}

}

```

5. 归并排序

归并排序是一种基于归并操作的排序算法,其核心思想是将数组分成若干个子序列递归地进行排序,之后再将排好序的子序列归并成整体有序的序列。

它的核心代码如下:

```java

public void mergeSort(int[] arr, int left, int right) {

if (left < right) {

int mid = (left + right) / 2;

mergeSort(arr, left, mid);

mergeSort(arr, mid + 1, right);

merge(arr, left, mid, right);

}

}

private void merge(int[] arr, int left, int mid, int right) {

int[] temp = new int[arr.length];

int i = left, j = mid + 1, k = left;

while (i <= mid && j <= right) {

if (arr[i] < arr[j]) {

temp[k++] = arr[i++];

} else {

temp[k++] = arr[j++];

}

}

while (i <= mid) {

temp[k++] = arr[i++];

}

while (j <= right) {

temp[k++] = arr[j++];

}

for (i = left; i <= right; i++) {

arr[i] = temp[i];

}

}

```

6. 快速排序

快速排序是一种常用的排序算法,其核心思想是将一个序列分成两部分,其中一部分序列所有元素都小于另一部分序列的任意元素,然后递归对两部分序列进行排序。

它的核心代码如下:

```java

public void quickSort(int[] arr, int left, int right) {

if (left < right) {

int pivot = partition(arr, left, right);

quickSort(arr, left, pivot - 1);

quickSort(arr, pivot + 1, right);

}

}

private int partition(int[] arr, int left, int right) {

int pivot = arr[left];

int i = left, j = right;

while (i < j) {

while (i < j && arr[j] >= pivot) {

j--;

}

if (i < j) {

arr[i++] = arr[j];

}

while (i < j && arr[i] < pivot) {

i++;

}

if (i < j) {

arr[j--] = arr[i];

}

}

arr[i] = pivot;

return i;

}

```

7. 堆排序

堆排序是一种利用堆的特性进行排序的算法,其核心思想是将一个序列构建成一个大/小根堆,然后逐个将堆顶元素取出来,形成有序序列。

它的核心代码如下:

```java

public void heapSort(int[] arr) {

int n = arr.length;

buildHeap(arr, n);

for (int i = n - 1; i > 0; i--) {

swap(arr, 0, i);

heapify(arr, i, 0);

}

}

private void buildHeap(int[] arr, int n) {

for (int i = n / 2 - 1; i >= 0; i--) {

heapify(arr, n, i);

}

}

private void heapify(int[] arr, int n, int i) {

int largest = i;

int l = 2 * i + 1;

int r = 2 * i + 2;

if (l < n && arr[l] > arr[largest]) {

largest = l;

}

if (r < n && arr[r] > arr[largest]) {

largest = r;

}

if (largest != i) {

swap(arr, i, largest);

heapify(arr, n, largest);

}

}

private void swap(int[] arr, int i, int j) {

int temp = arr[i];

arr[i] = arr[j];

arr[j] = temp;

}

```

8. 计数排序

计数排序是一种非比较排序算法,其核心思想是通过统计小于等于某个数的元素的个数来确定该元素在有序序列中的位置。

它的核心代码如下:

```java

public void countingSort(int[] arr) {

int max = Integer.MIN_VALUE, min = Integer.MAX_VALUE;

for (int num : arr) {

max = Math.max(max, num);

min = Math.min(min, num);

}

int n = max - min + 1;

int[] count = new int[n];

for (int num : arr) {

count[num - min]++;

}

int index = 0;

for (int i = 0; i < n; i++) {

while (count[i]-- > 0) {

arr[index++] = i + min;

}

}

}

```

Java中8种基本数据类型标识符

在Java中有8种基本数据类型标识符,它们分别是:

1. byte

byte是一种8位有符号整型数据类型,其取值范围为-128到127。

在Java中,byte类型通常用来存储小整数或者二进制数据。

2. short

short是一种16位有符号整型数据类型,其取值范围为-32768到32767。

在Java中,short类型通常用来存储比byte更大的整数。

3. int

int是一种32位有符号整型数据类型,其取值范围为-2147483648到2147483647。

在Java中,int类型通常用来存储整数和计算结果。

4. long

long是一种64位有符号整型数据类型,其取值范围为-9223372036854775808到9223372036854775807。

在Java中,long类型通常用来存储比int更大的整数,或者处理需要大量时间的复杂计算。

5. float

float是一种32位单精度浮点型数据类型,其取值范围为1.4E-45到3.4E+38。

在Java中,float类型通常用来存储小数或者需要处理的数值较大的计算结果。

6. double

double是一种64位双精度浮点型数据类型,其取值范围为4.9E-324到1.8E+308。

在Java中,double类型通常用来存储较大的小数或者需要高精度计算的复杂数据。

7. char

char是一种16位Unicode字符数据类型,其取值范围为'\u0000'(即0)到'\uffff'(即65535)。

在Java中,char类型通常用来存储字符或者处理文本数据。

8. boolean

boolean是一种表示真值的数据类型,其取值为true或者false。

在Java中,boolean类型通常用来存储逻辑值或者决策是否执行某些操作。

壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。

我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!

点赞(40) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部