一:快速排序:(6条消息) 快速排序---(面试碰到过好几次)_nrsc-CSDN博客_快速排序
这个我是根据原理来搞的,最后的顺序是对的,可能一些小bug没有被我发现。
public void quickSort(int start,int end) {
int tempKey;
int tempArray;
if(start>=end) {
return;
}
int tempLeft = start+1;
int tempRight = end;
tempArray = start;
tempKey = data[start].key;
while(true) {
while(tempLeft<tempRight&&data[tempRight].key>=tempKey) {//依照基准tempKey逐渐进行
tempRight--;
}
if(tempLeft<tempRight) {
data[tempRight].key = data[tempArray].key;
tempArray = tempRight;
}else break;
while(tempLeft<tempRight&&data[tempLeft].key<=tempKey) {
tempLeft++;
}
if(tempLeft<tempRight) {//判断是否还满足条件,
data[tempLeft].key = data[tempArray].key;
tempArray = tempLeft;
}else break;
}
quickSort(start,tempArray-1);
quickSort(tempArray+1,end);
}
二:选择排序:
public void selectionSort() {
DataArrayNode minNode = data[0];
DataArrayNode tempNode;
for(int i = 0;i < data.length-1;i++) {
minNode = data[i];
for(int j = i+1;j<data.length;j++) {
if(data[j].key<data[i].key) {
tempNode = data[j];
data[j] = data[i];
data[i] = tempNode;
}
}
}
for(int i = 0;i < dataLength;i++) {
System.out.print(data[i].key+" ");
}
}