自己又把几个排序算法分别写了一遍,中间还出现了不少错误
冒泡排序:
class BubbleSort { public static void main(String args[]){ //第一趟冒泡排序 //第一个数和第二比较………… //BubbleSort({1,4,4,6,8}); //int[] src; int[] src1 = {1,4,6,3,5,7}; new BubbleSort().BubbleSort(src1); } void BubbleSort(int[] src){ int temp; for(int i=0;i<src.length;i++){ for(int j=i+1;j<src.length;j++){ if(src[i]>src[j]){ temp = src[i]; src[i] = src[j]; src[j] = temp; } } } /*for(int a=0;a<src.length;a++){ System.out.println(src[a]); } */ } }
插入排序:
//实现插入排序算法
class InsertSort
{
//把第i个数插入到src[1..i-1]中,比较i和i-1
void Sort(int[]src){
int len = src.length;
for(int i=0;i<len;i++){
for(int j=i;j>0;j--){
//如果第i个元素大于第i-1个元素,排在其后面
if(src[j]>src[j-1]){
;
}
//如果i小于i-1,与i-1交换继续向前比较
else{
int temp = src[j];
src[j] = src[j-1];
src[j-1] = temp;
}
}
}
}
public static void main(String args[]){
int[] data = {2,1,4,6,5,8,7};
new InsertSort().Sort(data);
for(int i=0;i<data.length;i++)
System.out.println(data[i]);
}
}
快速排序:
//快速排序算法的实现
class QuickSort
{
void sort(int[] src,int low,int high){
if(low<high){
//定义枢轴指针和前后2个变量
int piotkey = src[low];
int i = low;
int j = high;
while(i!=j){
int temp;
if(src[i]<piotkey){
i++;
}else if(src[j]>piotkey){
j--;
}else{
temp = src[i];
src[i] = src[j];
src[j] = temp;
}
}
sort(src,low,i);
sort(src,i+1,high);
}
}
public static void main(String args[]){
int[] data = {2,4,1,6,5,3,7,8};
new QuickSort().sort(data,0,7);
for(int i=0;i<data.length;i++){
System.out.println(data[i]);
}
}
}
选择排序:
//实现选择排序算法
class SelectionSort
{
//从1到N个数里选择出一个最小的数与第一个数交换 以此类推
void Sort(int[] src){
for(int i=0; i<src.length-1; i++){
//选出i到N中最小的一个数
int j;
int smallestLoc = 1;
for(j=i+1;j<src.length;j++){
int min = src[i];
if(src[j]<min){
min = src[j];
smallestLoc = j;
}
}
//交换i和min
int temp;
temp = src[i];
src[i] = src[smallestLoc];
src[smallestLoc] = temp;
}
for(int a=0;a<src.length;a++){
System.out.println(src[a]);
}
}
public static void main(String args[]){
int[] src1 ={3,2,4,6,1};
new SelectionSort().Sort(src1);
}
}
希尔排序:
//希尔排序算法的实现
class ShellSort
{
int d;//d为增量
void sort(int[] src){
for(d = src.length/2;d>0; d /=2){
//while()
for(int i=0;i<src.length;i++){
for(int j=i;j<src.length;j=j+d){
//第一个数和第1+d个数比较
int temp;
if(src[i]>src[j]){
temp = src[i];
src[i] = src[j];
src[j] = temp;
}
}
}
}
}
public static void main(String args[]){
int[] data = {2,4,1,5,6,8,7};
new ShellSort().sort(data);
for(int i=0;i<data.length;i++){
System.out.println(data[i]);
}
}
}