📄 alphabetizerimpl.java
字号:
/**
*
*/
package adtstyle.impl;
import java.util.Comparator;
import java.util.List;
import adtstyle.Alphabetizer;
import adtstyle.CircularShift;
import adtstyle.LineStorage;
public class AlphabetizerImpl implements Alphabetizer {
private LineStorage lineStorage = new LineStorageImpl();
public AlphabetizerImpl() {}
public AlphabetizerImpl(LineStorage lineStorage) {
this.lineStorage = lineStorage;
}
public LineStorage getLineStorage() {
return lineStorage;
}
public void setLineStorage(LineStorage lineStorage) {
this.lineStorage = lineStorage;
}
public void addLine(String[] line) {
lineStorage.addLine(line);
}
public void alph(CircularShift circularShift) {
//快速排序
List<String[]> lines = circularShift.getAllLines();
qSort(lines, 0, lines.size() - 1, new Comparator<String[]>() {
public int compare(String[] o1, String[] o2) {
if(o1[0].compareToIgnoreCase(o2[0]) == 0)
return 0;
else if(o1[0].compareToIgnoreCase(o2[0]) > 0)
return 1;
else
return -1;
}
});
setAllLines(lines);
}
public String[] getLine(int lineIndex) {
return lineStorage.getLine(lineIndex);
}
public int getLineCount() {
return lineStorage.getLineCount();
}
public void setLine(int lineIndex, String[] line) {
lineStorage.setLine(lineIndex, line);
}
public String getLineAsString(int lineIndex) {
return lineStorage.getLineAsString(lineIndex);
}
public List<String[]> getAllLines() {
return lineStorage.getAllLines();
}
public void setAllLines(List<String[]> lines) {
lineStorage.setAllLines(lines);
}
//下面是快速排序算法
public static <T> void qSort(List<T> a, int p, int r, Comparator<? super T> c)
{
if(p < r)
{
int q = partition(a, p, r, c);
qSort(a, p, q - 1, c);
qSort(a, q + 1, r, c);
}
}
private static <T> int partition(List<T> a, int p, int r, Comparator<? super T> c) {
int i = p;
int j = r + 1;
while (true) {
while (c.compare(a.get(++i), a.get(p)) <= 0)
if (i == r)
break;
while (c.compare(a.get(p), a.get(--j)) <= 0)
if (j == p)
break;
if (i >= j)
break;
swap(a, i, j);
}
swap(a, j, p);
return j;
}
private static <T> void swap(List<T> a, int i, int j)
{
T temp = a.get(i);
a.set(i, a.get(j));
a.set(j, temp);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -