多种排序

public class Test2 {
	static List<Integer> list = new ArrayList<Integer>();
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		list.add(1);
		list.add(536);
		list.add(599);
		list.add(36);
		list.add(15);
		list.add(88);
		list.add(65);
		list.add(45);
		list.add(52);
		list.add(55);
//		test();
		//快速排序
		System.out.println("原集合:"+list);
		queckSort(0, list.size()-1);
		System.out.println("排序后:"+list);
		//插入排序
//		System.out.println("原集合:"+list);
//		insertSort();
//		System.out.println("排序后:"+list);
		//选择排序
//		System.out.println("原集合:"+list);
//		selectSort();
//		System.out.println("排序后:"+list);
//		//冒泡排序
//		System.out.println("原集合:"+list);
//		maoPaoSort();
//		System.out.println("排序后:"+list);
	}
	/**
	 * 快速排序
	 * @param left
	 * @param right
	 */
	public static void queckSort(int left,int right){
		int temp;
		if(left > right)
			return ;
		temp = list.get(left);
		int i = left;
		int j = right;
		while(i!=j)
		{
			while((list.get(j)<=temp)&&i<j)
				j--;
			while((list.get(i)>=temp)&&i<j)
				i++;
			if(i<j)
			{
				int t = list.get(j);
				list.set(j, list.get(i));
				list.set(i, t);
			}
			System.out.println(list);
		}
		list.set(left, list.get(i));
		list.set(i, temp);
		queckSort(left, i-1);
		queckSort(i+1, right);

	}
	/**
	 * 插入排序
	 * 3 1 2 4 5
	 */
	public static void insertSort(){
		int i,j,temp;
		for(i = 1;i<list.size();i++)
		{
			temp = list.get(i);
			for(j=i-1;j>=0&&temp<list.get(j);j--)
				{
				list.set(j+1, list.get(j));
				System.out.println(list);
				}

			list.set(j+1, temp);

		}
	}
	/**
	 * 选择排序、
	 *
	 * */
	public static void selectSort(){
		int t;
		for(int i = 0;i<list.size()-1;i++)
			for(int j = i+1;j<list.size();j++)
			{	if(list.get(i)>list.get(j)){
					t = list.get(i);
					list.set(i, list.get(j));
					list.set(j, t);
				}
				System.out.println(list);
			}
		}
	/**
	 * 冒泡排序
	 */
	public static void maoPaoSort(){
		int t;
		for(int i = 0 ; i<list.size()-1;i++)
			for(int j = 0;j<list.size()-1-i;j++)
				if(list.get(j)<list.get(j+1))
				{
					t = list.get(j+1);
					list.set((j+1), list.get(j));
					list.set(j, t);
				}
	}
}

  

时间: 2024-10-27 13:38:35

多种排序的相关文章

多种排序算法的比较

1.冒泡排序和选择排序 为什么把冒泡排序和选择排序放在一块儿呢?因为我发现他们两个有点像. 冒泡排序是不停的把最大的元素换到数组的最右端. 而选择排序是把最小的元素换到最左端. 看到这儿,你是不是觉得冒泡和选择好像没啥区别啊,把最大换成最小就成了一种新的算法?那我也来一个? 其实,无论换最大还是最小,都无关紧要,就算冒泡变成换最小的元素换到数组的最左端,那它也叫冒泡排序的. 冒泡排序的描述:它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进

多种排序算法整理

最近面试一直问到排序,老是各种搞混,特地来整理整理 先盗用一张图: 说明: 内部排序基于内存,外部排序是数据量大,而内存与外存的相结合的排序 一.插入排序 关键词:插入,将数字插入到一条已经排好序的有序表中. 1.1直接插入排序 假设要5,4,2,3,1 要升序排列. i=1 5 i=2 5,4    ==>4,5 i=3 4,5,2 ===>2,4,5 i=4 2,4,5,3 ==>2,3,4,5 ... 思想很简单,就是从一个元素开始,一个个元素添加,返回有序列表. 其复杂度为  

【Sort】多种排序

这篇文章包含了插入排序,希尔排序,堆排序,归并排序和快速排序,是前几篇文章的集合. 一共包括三个文件 sort.h sort.cpp main.cpp 1.main.cpp 1 #include <iostream> 2 #include "sort.h" 3 using namespace std; 4 5 int main() 6 { 7 \\test code 8 return 0; 9 } 2.sort.h 1 #ifndef SORT_H_ 2 #define S

多种排序算法的思路和简单代码的实现(一)

就自己简单的理解了一些排序算法(JAVA)思路和代码分享给大家:欢迎大家进行交流. 直接插入排序,折半插入排序,冒泡排序,快速排序 1 public class Sort { 2 /* 3 * 直接插入排序: 先确定一个有序数组,然后把插入的数与有序数组从最后依次进行比较, 直到插入的数比有序数组的数大,此数换为插入的数字,从此位置以后 4 * 的数依次向后移动一位. 5 */ 6 public static void insert(int[] a) { 7 for (int i = 1; i

多种排序算法的思路和简单代码的实现(三)

下面是和快速排序,堆排序,相媲美的归并排序,时间复杂度都为O(nLog2n). 对于归并排序中出现的递归算法,调用的函数顺序以及如何返回,大家可以访问这个网址来详细理解 http://blog.csdn.net/cinderella_hou/article/details/51763681 个人看了,非常受益.. 1 /* 2 * 归并排序: 先递归分解数列,再合并数列,就是归并.归并排序是稳定的. 3 */ 4 public static void mergSort(int[] a) { 5

多种排序算法

插入排序 已经有一个排好的序列,要将新元素放到序列合适的位置. int *InsertSortA(int *R,n) { int i,j; for(j=1;j<n;j++) { i=j-1; tmp=R[j]; while(i>=0&&R[i]<tmp) { R[i+1]=R[i]; i--; } R[i+1]=tmp; } return R: } 上述算法中每次都要判断i是否小于0,可以让数组第一个元素是一个很小的值,使得R[0]<min{Ri},i为1到n,整个

织梦 {dede:list}列表按多种排序显示

orderby='sortrank' 文档排序方式 orderby='hot' 或 orderby='click' 表示按点击数排列 orderby='sortrank' 或 orderby='pubdate' 按出版时间排列 orderby='near' orderby=='lastpost' 按最后评论时间 orderby=='scores' 按得分排序 orderby='id' 按文章ID排序 orderby='rand' 随机获得指定条件的文档列表 orderby='scores' 按评

多种排序功能的实现

#include<iostream>#include<stdlib.h>#include<algorithm>#include<ctime>#include<cstdio>#include<iomanip>#include<conio.h>using namespace std;template<class T>void InsertSort(T* pa,int n){    T temp;    for(in

回调函数实现冒泡法的多种排序

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <assert.h> #include <string.h> typedef struct//定义学生结构体 { char name[20]; char number[20]; int score; }Student; int struct_cmp(const void *elem1, const v