`

常用排序算法

 
阅读更多

生活中常用的排序算法:冒泡排序、插入排序、快速排序

package com.tao.bao;


/**
 * @author Administrator
 *
 */
public class SortAll {

	/**
	 * @param args
	 * 插入排序
	 */
	public int[] insertionSort(int[] arr){
		int j;
		for(int p=1;p<arr.length;p++){
			int tmp=arr[p];
			for(j=p;j>0&&arr[j-1]>tmp;j--)	
			{
				arr[j]=arr[j-1];
			}
			 arr[j]=tmp;
		}
		return arr;
	}
	
	/**
	 * ,冒泡排序
	 * @param arr
	 * @return
	 */
	public int[] maoPaoSort(int[] arr){
		for(int i=0;i<arr.length;i++){
		   for(int j=0;j<arr.length-i-1;j++){
			   if(arr[j]>arr[j+1])
			   {
				   int tmp = arr[j];
				   arr[j]=arr[j+1];
				   arr[j+1]=tmp;
			   }
		   }
		}
		return arr;
	}
	
	/*
	 * 快速排序
	 */
	public int partition(int[] arr,int left,int right){
		int x = arr[right]; //选取最后一个元素为主元,算法导论中算法
		int i = left-1;
		for(int j=left;j<right;j++){
			if(arr[j]<=x){
				i=i+1;
				swap(arr,i,j);
			}
		}
		swap(arr,i+1, right);
		return i+1;
		
	}
	
	public int[] quicksort(int[] arr,int left,int right){
		if(left<right){
			int q = partition(arr, left, right);//关键
			quicksort(arr, left, q-1);
			quicksort(arr, q+1, right);
			return arr;
		}
		return null;	
	}
	
	public static void swap(int arr[],int a,int b){
		int temp = 0;
		 temp = arr[a];
		 arr[a] =arr[b];
		 arr[b] = temp;
	}
	

	
	public static void main(String[] args) {
		SortAll all = new SortAll();
		int arr[] = {2,8,7,1,3,5,6,4};
		int newarr1[] = all.insertionSort(arr);
		System.out.println("insertionSort方法");
		for(int i=0;i<newarr1.length;i++){
			System.out.print(newarr1[i]+" ");
		}
		System.out.println();
		int newarr[] = all.maoPaoSort(arr);
		System.out.println("maoPaoSort方法");
		for(int i=0;i<newarr.length;i++){
			System.out.print(newarr[i]+" ");
		}
		System.out.println();
		
		int arrquick[] = all.quicksort(arr, 0, arr.length-1);
		System.out.println("arrquick方法");
		for(int i=0;i<arrquick.length;i++){
			System.out.print(arrquick[i]+" ");
		}
		System.out.println();
	}

}
 
0
1
分享到:
评论

相关推荐

    python常用排序算法汇总

    该程序包含7大排序算法: # sort.bubbleSort() #冒泡排序 # sort.shellSort() #希尔排序 # sort.insertionSort() #插入排序 # sort.Selectionsort1() #选择排序 # sort.heapSort() #堆排序 # sort.countSort() ...

    常用排序算法总结 常用排序算法总结 常用排序算法总结

    常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结

    浅析基于C语言的常用排序算法比较.pdf

    插入排序算法同样是基于C语言的一种常用排序算法。插入排序的基本思想是:把待排序的序列分为已排序和未排序两部分,每次将一个未排序的元素,按照其大小插入到已排序序列中的适当位置,直到所有元素都被插入。插入...

    常用排序算法的比较

    ### 常用排序算法的比较 #### 一、设计内容和要求 1. **设计内容**:通过随机函数产生N个随机整数,并采用多种排序算法对这些数进行排序,进而分析各种算法所需的排序时间,以确定哪些算法更为高效。 2. **设计...

    常用排序算法java演示

    本文将深入探讨标题"常用排序算法java演示"中涉及的知识点,包括排序算法的原理、Java实现方式以及其在实际应用中的图形演示。 首先,让我们逐一了解几种常见的排序算法: 1. **冒泡排序(Bubble Sort)**:这是一...

    常用排序算法的动态演示系统

    常用排序算法的动态演示系统 在本系统中,我们主要实现了五种常用的排序算法:冒泡排序法、快速排序法、直接插入排序法、折半插入排序法和树形选择排序法。这些算法都是在计算机科学中最基本和最重要的排序算法,...

Global site tag (gtag.js) - Google Analytics