import java.util.Arrays;
public class aa {
int temp=0;
public static void main(String[] args) {
int[] array={1,6,8,5,9,3,4,7};
//冒泡排序
aa a = new aa();
//a.bubbleSort(array);
//a.selectionSort(array);
//a.InsertSort(array);
//a.ShellSort(array);
//a.MergeSort(array,0,array.length-1);
// a.QuickSort(array,0,array.length-1);
// for (int i = 0; i < array.length; i++) {
// System.out.println(array[i]);
// }
a.HeapSort(array,array.length-1);
}
public void bubbleSort(int[] array){
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length-1-i; j++) {
if(array[j]>array[j+1]){
temp=array[j+1];
array[j+1]=array[j];
array[j]=temp;
}
}
}
for (int i = 0; i <array.length ; i++) {
System.out.println(array[i]);
}
}
public void selectionSort(int[] array){
for (int i = 0; i < array.length; i++) {
int minindex=i;
for (int j = i; j < array.length; j++) {
if(array[j]<array[minindex]){
minindex=j;
}
}
temp=array[i];
array[i]=array[minindex];
array[minindex]=temp;
}
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
public void InsertSort(int[] array){
int current;
for (int i = 0; i < array.length-1; i++) {
current=array[i+1];
int perindex=i;
while(perindex>=0&¤t<array[perindex]){
array[perindex+1]=array[perindex];
perindex--;
}
array[perindex+1]=current;
}
for (int i = 0; i <array.length ; i++) {
System.out.println(array[i]);
}
}
public void ShellSort(int[] array){
int length=array.length;
int temp,gap= length/2;
while(gap>0){
for(int i=gap;i<length;i++){
temp=array[i];
int perindex=i-gap;
while (perindex>=0&&array[perindex]>temp){
array[perindex+gap]=array[perindex];
perindex-=gap;
}
array[perindex+gap]=temp;
}
gap=gap/2;
}
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
public void MergeSort(int[] array,int start,int end){
if(start<end){
int mid=(end+start)/2;
MergeSort(array,start,mid);
MergeSort(array,mid+1,end);
Merge(array,start,mid,mid+1,end);
}
}
public void Merge(int[] array,int start1,int end1,int start2,int end2){
int n1=end1-start1+1;
int n2=end2-start2+1;
int[] array_left = new int[n1];
int[] array_right = new int[n2];
for (int i = 0; i < n1; i++) {
array_left[i]=array[start1+i];
}
for (int i = 0; i < n2; i++) {
array_right[i]=array[start2+i];
}
int left=0;
int right=0;
int p=start1;
while(left<n1&&right<n2){
if(array_left[left]<array_right[right]){
array[p]=array_left[left];
left++;
}else{
array[p]=array_right[right];
right++;
}
p++;
}
while (left<n1){
array[p]=array_left[left];
left++;
p++;
}
while (right<n2){
array[p]=array_right[right];
right++;
p++;
}
for (int i = 0; i <array.length ; i++) {
System.out.println(array[i]);
}
}
public void QuickSort(int[] array,int start,int end){
if(start<end){
int i=start;
int j=end;
int temp=array[start];
while(i<j){
while (i<j&&array[j]>temp){
j--;
}
array[i]=array[j];
while (i<j&&array[i]<temp){
i++;
}
array[j]=array[i];
}
array[i]=temp;
QuickSort(array,start,i-1);
QuickSort(array,i+1,end);
}else {
return;
}
}
public void HeapSort(int[] array,int n){
int i=n/2;
HeapAdjust(array,n);
for(i=n;i>=1;i--){
Swap(array,1,i);
HeapAdjust(array,i-1);
}
for (int j = 0; j < array.length; j++) {
System.out.println(array[j]);
}
}
public void HeapAdjust(int[] array,int n){
int temp=0;
for (int i = n/2; i >0; i--) {
if(array[i]<array[i*2+1]&&i*2+1<=n){
temp=array[i];
array[i]=array[i*2+1];
array[i*2+1]=temp;
}
if(array[i]<array[i*2]&&i*2<=n){
temp=array[i];
array[i]=array[i*2];
array[i*2]=temp;
}
}
}
public void Swap(int[] array,int i,int j){
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
八大排序算法
最新推荐文章于 2025-04-30 11:28:26 发布