Skip to content

Commit 2d4f5e3

Browse files
committed
add tim sorts
1 parent 968b0d9 commit 2d4f5e3

File tree

11 files changed

+1123
-735
lines changed

11 files changed

+1123
-735
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package com.github.myibu.algorithm.sort;
2+
3+
import java.util.Comparator;
4+
/**
5+
* abstract Sort
6+
* @author myibu
7+
* Created on 2021/11/2
8+
*/
9+
public abstract class AbstractSorts implements Sorts {
10+
@Override
11+
public void sort(byte[] a) {
12+
sort(a, 0, a.length);
13+
}
14+
15+
@Override
16+
public void sort(short[] a) {
17+
sort(a, 0, a.length);
18+
}
19+
20+
@Override
21+
public void sort(int[] a) {
22+
sort(a, 0, a.length);
23+
}
24+
25+
@Override
26+
public void sort(long[] a) {
27+
sort(a, 0, a.length);
28+
}
29+
30+
@Override
31+
public void sort(float[] a) {
32+
sort(a, 0, a.length);
33+
}
34+
35+
@Override
36+
public void sort(double[] a) {
37+
sort(a, 0, a.length);
38+
}
39+
40+
@Override
41+
public void sort(char[] a) {
42+
sort(a, 0, a.length);
43+
}
44+
45+
@Override
46+
public void sort(Object[] a) {
47+
sort(a, 0, a.length);
48+
}
49+
50+
51+
@Override
52+
public <T> void sort(T[] a, Comparator<? super T> c) {
53+
sort(a, 0, a.length, c);
54+
}
55+
}

src/main/java/com/github/myibu/algorithm/sort/BubbleSorts.java

Lines changed: 74 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,10 @@
66
* @author myibu
77
* Created on 2021/11/2
88
*/
9-
public class BubbleSorts implements Sorts {
10-
@Override
11-
public void sort(byte[] a) {
12-
int n = a.length;
13-
for (int i = 0; i < n-1; i++) {
14-
for (int j = 0; j < n - i - 1; j++) {
9+
public class BubbleSorts extends AbstractSorts {
10+
public static void bubbleSort(byte[] a, int fromIndex, int toIndex) {
11+
for (int i = 0; i < toIndex-fromIndex; i++) {
12+
for (int j = fromIndex; j < toIndex - i - 1; j++) {
1513
if (a[j] > a[j + 1]) {
1614
byte temp = a[j];
1715
a[j] = a[j + 1];
@@ -21,13 +19,10 @@ public void sort(byte[] a) {
2119
}
2220
}
2321

24-
@Override
25-
public void sort(short[] a) {
26-
int n = a.length;
27-
for (int i = 0; i < n-1; i++) {
28-
for (int j = 0; j < n - i - 1; j++) {
22+
public static void bubbleSort(short[] a, int fromIndex, int toIndex) {
23+
for (int i = 0; i < toIndex-fromIndex; i++) {
24+
for (int j = fromIndex; j < toIndex - i - 1; j++) {
2925
if (a[j] > a[j + 1]) {
30-
// swap arr[j+1] and arr[j]
3126
short temp = a[j];
3227
a[j] = a[j + 1];
3328
a[j + 1] = temp;
@@ -36,13 +31,10 @@ public void sort(short[] a) {
3631
}
3732
}
3833

39-
@Override
40-
public void sort(int[] a) {
41-
int n = a.length;
42-
for (int i = 0; i < n-1; i++) {
43-
for (int j = 0; j < n - i - 1; j++) {
34+
public static void bubbleSort(int[] a, int fromIndex, int toIndex) {
35+
for (int i = 0; i < toIndex-fromIndex; i++) {
36+
for (int j = fromIndex; j < toIndex - i - 1; j++) {
4437
if (a[j] > a[j + 1]) {
45-
// swap arr[j+1] and arr[j]
4638
int temp = a[j];
4739
a[j] = a[j + 1];
4840
a[j + 1] = temp;
@@ -51,13 +43,10 @@ public void sort(int[] a) {
5143
}
5244
}
5345

54-
@Override
55-
public void sort(long[] a) {
56-
int n = a.length;
57-
for (int i = 0; i < n-1; i++) {
58-
for (int j = 0; j < n - i - 1; j++) {
46+
public static void bubbleSort(long[] a, int fromIndex, int toIndex) {
47+
for (int i = 0; i < toIndex-fromIndex; i++) {
48+
for (int j = fromIndex; j < toIndex - i - 1; j++) {
5949
if (a[j] > a[j + 1]) {
60-
// swap arr[j+1] and arr[j]
6150
long temp = a[j];
6251
a[j] = a[j + 1];
6352
a[j + 1] = temp;
@@ -66,13 +55,10 @@ public void sort(long[] a) {
6655
}
6756
}
6857

69-
@Override
70-
public void sort(float[] a) {
71-
int n = a.length;
72-
for (int i = 0; i < n-1; i++) {
73-
for (int j = 0; j < n - i - 1; j++) {
58+
public static void bubbleSort(float[] a, int fromIndex, int toIndex) {
59+
for (int i = 0; i < toIndex-fromIndex; i++) {
60+
for (int j = fromIndex; j < toIndex - i - 1; j++) {
7461
if (a[j] > a[j + 1]) {
75-
// swap arr[j+1] and arr[j]
7662
float temp = a[j];
7763
a[j] = a[j + 1];
7864
a[j + 1] = temp;
@@ -81,13 +67,10 @@ public void sort(float[] a) {
8167
}
8268
}
8369

84-
@Override
85-
public void sort(double[] a) {
86-
int n = a.length;
87-
for (int i = 0; i < n-1; i++) {
88-
for (int j = 0; j < n - i - 1; j++) {
70+
public static void bubbleSort(double[] a, int fromIndex, int toIndex) {
71+
for (int i = 0; i < toIndex-fromIndex; i++) {
72+
for (int j = fromIndex; j < toIndex - i - 1; j++) {
8973
if (a[j] > a[j + 1]) {
90-
// swap arr[j+1] and arr[j]
9174
double temp = a[j];
9275
a[j] = a[j + 1];
9376
a[j + 1] = temp;
@@ -96,13 +79,10 @@ public void sort(double[] a) {
9679
}
9780
}
9881

99-
@Override
100-
public void sort(char[] a) {
101-
int n = a.length;
102-
for (int i = 0; i < n-1; i++) {
103-
for (int j = 0; j < n - i - 1; j++) {
82+
public static void bubbleSort(char[] a, int fromIndex, int toIndex) {
83+
for (int i = 0; i < toIndex-fromIndex; i++) {
84+
for (int j = fromIndex; j < toIndex - i - 1; j++) {
10485
if (a[j] > a[j + 1]) {
105-
// swap arr[j+1] and arr[j]
10686
char temp = a[j];
10787
a[j] = a[j + 1];
10888
a[j + 1] = temp;
@@ -111,14 +91,11 @@ public void sort(char[] a) {
11191
}
11292
}
11393

114-
@Override
115-
public void sort(Object[] a) {
116-
int n = a.length;
117-
for (int i = 0; i < n-1; i++) {
118-
for (int j = 0; j < n - i - 1; j++) {
94+
public static void bubbleSort(Object[] a, int fromIndex, int toIndex) {
95+
for (int i = 0; i < toIndex-fromIndex; i++) {
96+
for (int j = fromIndex; j < toIndex - i - 1; j++) {
11997
Comparable pre = (Comparable)a[j];
12098
if (pre.compareTo(a[j+1]) > 0) {
121-
// swap arr[j+1] and arr[j]
12299
Object temp = a[j];
123100
a[j] = a[j + 1];
124101
a[j + 1] = temp;
@@ -127,18 +104,61 @@ public void sort(Object[] a) {
127104
}
128105
}
129106

130-
@Override
131-
public <T> void sort(T[] a, Comparator<? super T> c) {
132-
int n = a.length;
133-
for (int i = 0; i < n-1; i++) {
134-
for (int j = 0; j < n - i - 1; j++) {
107+
public <T> void bubbleSort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c) {
108+
for (int i = 0; i < toIndex-fromIndex; i++) {
109+
for (int j = fromIndex; j < toIndex - i - 1; j++) {
135110
if (c.compare(a[j], a[j+1]) > 0) {
136-
// swap arr[j+1] and arr[j]
137111
T temp = a[j];
138112
a[j] = a[j + 1];
139113
a[j + 1] = temp;
140114
}
141115
}
142116
}
143117
}
118+
119+
120+
@Override
121+
public void sort(byte[] a, int fromIndex, int toIndex) {
122+
bubbleSort(a, fromIndex, toIndex);
123+
}
124+
125+
@Override
126+
public void sort(short[] a, int fromIndex, int toIndex) {
127+
bubbleSort(a, fromIndex, toIndex);
128+
}
129+
130+
@Override
131+
public void sort(int[] a, int fromIndex, int toIndex) {
132+
bubbleSort(a, fromIndex, toIndex);
133+
}
134+
135+
@Override
136+
public void sort(long[] a, int fromIndex, int toIndex) {
137+
bubbleSort(a, fromIndex, toIndex);
138+
}
139+
140+
@Override
141+
public void sort(float[] a, int fromIndex, int toIndex) {
142+
bubbleSort(a, fromIndex, toIndex);
143+
}
144+
145+
@Override
146+
public void sort(double[] a, int fromIndex, int toIndex) {
147+
bubbleSort(a, fromIndex, toIndex);
148+
}
149+
150+
@Override
151+
public void sort(char[] a, int fromIndex, int toIndex) {
152+
bubbleSort(a, fromIndex, toIndex);
153+
}
154+
155+
@Override
156+
public void sort(Object[] a, int fromIndex, int toIndex) {
157+
bubbleSort(a, fromIndex, toIndex);
158+
}
159+
160+
@Override
161+
public <T> void sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c) {
162+
bubbleSort(a, fromIndex, toIndex, c);
163+
}
144164
}

0 commit comments

Comments
 (0)