冒泡排序,选择排序,快速排序

package com.hello;

public class HelloJava {
	/**
	 * 冒泡排序(通过一次一次的循环,根据相近两个值进行比较,将大的值往下移)
	 * @author MR ZHANG
	 * @param arr
	 * @return
	 */
	public static void getBubbleSort(int[] arr){
		for(int i = 1;i< arr.length-1;i++){
			for(int j=0; j< arr.length-i;j++){
				if(arr[j]>=arr[j+1]){
					int temp = arr[j+1];
					arr[j+1] = arr[j];
					arr[j] = temp;
				}
			}
		}
	}
	/**
	 * 选择排序(每次循环选择剩余的数据中最大数的下标,然后保存亲赖,最后在进行替换)
	 * @author Mrzhang
	 * @param arr
	 * @return
	 */
	public static void getSelectSort(int[] arr){
		for(int i= 1;i<arr.length-1;i++){
			int index = 0;
			for(int j=0;j<=arr.length-i;j++){
				if(arr[j]>=arr[index]){
					index = j;
				}
			}
			int temp = arr[arr.length-i];
			arr[arr.length-i] = arr[index];
			arr[index] = temp;
		}

	}
	/**
	 * 快速排序(选择一个值作为KEY,然后将大于KEY的值移动到右边,将小于key的值移动到左边)
	 * @param arr
	 * @param lowIndex
	 * @param highIndex
	 */
	public static void getQuickSort(int[] arr,int lowIndex,int highIndex){
		int low = lowIndex,high = highIndex;
		while(low < high){
			while(high > low && arr[high] >= arr[low]){
				high--;
			}
			if(high > low){
				int temp = arr[high];
				arr[high] = arr[low];
				arr[low] = temp;
			}
			while(low < high && arr[low] < arr[high]){
				low++;
			}
			if(low < high){
				int temp = arr[low];
				arr[low] = arr[high];
				arr[high]= temp;
			}
		}
		if(high > lowIndex){
			getQuickSort(arr,lowIndex,--high);
		}
		if(low < highIndex){
			getQuickSort(arr,++low,highIndex);
		}

	}

	public static void main(String[] args){
		int[] arr = {1,9,6,2,2,8,5,4,3,7};
		System.out.println("原始数组为:");
		printArry(arr);//输出数组
		getQuickSort(arr,0,arr.length-1);//对数组进行快速排序
		System.out.println("快速排序后的数组:");
		printArry(arr);
	}
	public static void printArry(int[] arr){
		for(int i : arr){
			System.out.print(" " + i);
		}
		System.out.println();
	}
}

冒泡排序,选择排序,快速排序

时间: 2024-10-06 00:12:11

冒泡排序,选择排序,快速排序的相关文章

C# 插入排序 冒泡排序 选择排序 快速排序 堆排序 归并排序 基数排序 希尔排序

下面列出了数据结构与算法的八种基本排序:插入排序 冒泡排序 选择排序 快速排序 堆排序 归并排序 基数排序 希尔排序,然后是测试的例子.代码位置:http://download.csdn.net/detail/luozuolincool/8040027 排序类: public class Sortings { //插入排序 public void insertSort(int[] array) { int temp = 0; int index = 0; for (int i = 0; i <

排序算法详解(Go语言实现):冒泡排序/选择排序/快速排序/插入排序

算法是程序的灵魂,而排序算法则是一种最基本的算法.排序算法有许多种,本文介绍4中排序算法:冒泡排序,选择排序,快速排序和插入排序,以从小到大为例. 一.冒泡排序 冒泡排序的原理是,对给定的数组进行多次遍历,每次均比较相邻的两个数,如果前一个比后一个大,则交换这两个数.经过第一次遍历之后,最大的数就在最右侧了:第二次遍历之后,第二大的数就在右数第二个位置了:以此类推. //冒泡排序(排序10000个随机整数,用时约145ms) func bubbleSort(nums []int) { for i

冒泡排序,选择排序,快速排序

#!/usr/bin/env python # -*- coding: utf-8 -*-import randomimport time def cal_time(func): def inner(*args, **kwargs): start = time.time() res = func(*args, **kwargs) end = time.time() print("%s用时为%s" % (func.__name__, end - start)) return res re

C# 插入排序 冒泡排序 选择排序 高速排序 堆排序 归并排序 基数排序 希尔排序

以下列出了数据结构与算法的八种基本排序:插入排序 冒泡排序 选择排序 高速排序 堆排序 归并排序 基数排序 希尔排序,然后是測试的样例.代码位置:http://download.csdn.net/detail/luozuolincool/8040027 排序类: public class Sortings { //插入排序 public void insertSort(int[] array) { int temp = 0; int index = 0; for (int i = 0; i <

经典排序:冒泡排序+选择排序 小结

经典排序:冒泡排序+选择排序 例 FJUTOJ 1842 冒泡排序 原理是取相邻两个数进行大小比较,判断是否交换. 以从小到大排序为例,冒泡排序就像气泡一样,最小的数慢慢浮上来,最大的数慢慢沉下去.那么完整从头到尾做一次之后最后一位就是原序列中最大的数字了.然后只需要对1~(n-1)个数字进行排序,完成后倒数第二个数字也为原序列的1~n-1元素中最大的值.如此重复,进行n-1次一定能完成排序.参考代码: 1 #include <stdio.h> 2 void BubbleSort(int *,

基本排序算法(冒泡排序 选择排序 插入排序 快速排序 归并排序 基数排序 希尔排序)

冒泡排序 public static void bubbleSort(int[] arr){ int lgn = arr.length; for (int i = 0; i < lgn - 1; i++) { for (int j = 0; j < lgn - 1 - i; j++) { if(arr[j] > arr[j + 1]){ int temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp; } } } } 选择排序 publ

C语言-排序方法(冒泡排序,选择排序,快速排序, 插入排序 )

/* 排序算法 */ #include <stdio.h> //冒泡排序 void Bubble_sort(int *p_val, int size) { int j = 0; int i = 0; for (i = 0;i < size - 1;i++) { for (j = i;j < size - 1;j++) { if (*(p_val + j) > *(p_val + j + 1)) { *(p_val + j) ^= *(p_val + j + 1); *(p_v

算法 排序lowB三人组 冒泡排序 选择排序 插入排序

参考博客:基于python的七种经典排序算法   [经典排序算法][集锦]     经典排序算法及python实现 首先明确,算法的实质 是 列表排序.具体就是操作的列表,将无序列表变成有序列表! 一.排序的基本概念和分类 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. 排序的稳定性: 经过某种排序后,如果两个记录序号同等,且两者在原无序记录中的先后秩序依然保持不变,则称所使用的排序方法是稳定的,反之是不稳定

8.8 冒泡排序 选择排序 二分查找 递归使用

冒泡排序: #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 100000 #define M 100000 void show_arr(int * a,int n) { int i; for(i = 0; i < n; i++) { printf("%d ",a[i]); } printf("\n"); } void init_arr(in

冒泡排序,选择排序,二分法

public class Paixu { public static void main(String[] args) { int[]arr={1,2,8,10,18,22,28,100,20}; /* //选择排序 从小到大 for (int i = 0; i < arr.length-1; i++) { for (int j = i+1; j < arr.length; j++) { if (arr[i]>arr[j]) { int tmp=arr[i]; arr[i]=arr[j]