Java实现各种排序

选择排序+插入排序+冒泡排序+快速排序+归并排序

package javaFoundations;

/*
 * Contact.java
 * Represents a phone contact that implements Comparable
 */
public class Contact implements Comparable{
	private String firstname, lastname, phone;
	public Contact(String first, String last, String telephone){
		this.firstname = first;
		this.lastname = last;
		this.phone = telephone;
	}
	/*
	 * returns a string representation of this contact.
	 */
	public String toString(){
		return lastname + ", " + firstname + ": " + phone;
	}
	/*
	 * use both last and first names to determine lexical ordering.
	 */
	public int compareTo(Object other){
		int result; 
		
		if(lastname.equals(((Contact)other).lastname))
			result = firstname.compareTo(((Contact)other).firstname);
		else
			result = lastname.compareTo(((Contact)other).lastname);
		
		return result;
			
	}
	
}

package javaFoundations;
/*
 * SortPlayerList.java
 * Demonstrates a series of sort of Comparable objests
 */

public class SortPlayerList {
	public static void main(String[] args) {
		Contact[] players = new Contact[7];
		
		players[0] = new Contact("Rodger", "Federer", "222-222-2222");
		players[1] = new Contact("Andy", "Roddic", "444-444-4444");
		players[2] = new Contact("Maria", "Sharapove", "555-555-5555");
		players[3] = new Contact("Venus", "Williams", "777-777-7777");
		players[4] = new Contact("Lleyton", "Hewitt", "333-333-3333");
		players[5] = new Contact("Eleni", "Daniilidou", "111-111-1111");
		players[6] = new Contact("Serena", "Williams", "666-666-6666");
		
		Sorting.quickSort(players, 0, 6);
		
		for(Comparable player : players)
			System.out.println(player);
	}
}
package javaFoundations;
/*
 * Sorting.java
 * Contains various sort algorithms that operate on an array of
 * Comparable objests.
 */

public class Sorting {
	//--------------------------------------------------------------------------------
	/*
	 *  Sorts the specified array of integers using the selection
	 *  sort algorithm.
	 */
	public static void selectionSort(Comparable[] data){
		int min;
		
		for(int index = 0; index < data.length-1; index++){
			min = index;
			for(int scan = index+1; scan < data.length; scan++){
				if(data[scan].compareTo(data[min]) < 0 )
					min = scan;
			}
			swap(data, min, index);
		}
	}
	
	private static void swap(Comparable[] data, int index1, int index2){
		Comparable temp = data[index1];
		data[index1] = data[index2];
		data[index2] = temp;
	}
	//---------------------------------------------------------------------------------
	/*
	 * Sorts the specified array of objects using an insertion
	 * sort algorithm.
	 */
	public static void insertionSort(Comparable[] data){
		for(int i = 1; i < data.length; i++){
			Comparable key = data[i];
			int position = i;
			while(position > 0 && data[position - 1].compareTo(key) > 0 ){
				data[position] = data[position - 1];
				position--;
			}
			data[position] = key;
		}
	}
	//----------------------------------------------------------------------------------
	/*
	 * Sorts the specified array of objects using a bubble sort
	 * algorithm
	 */
	public static void bubbleSort(Comparable[] data) {
		for(int i = data.length - 1; i > 0; i--){
			for(int j = 0; j < i ; j++){
				if(data[j].compareTo(data[j+1]) > 0)
					swap(data, j, j + 1);
			}
		}
	}
	//----------------------------------------------------------------------------------
	/*
	 * Sorts the specified array of objects using the quick sort
	 * algorithm
	 */
	public static void quickSort(Comparable[] data, int min, int max){
		int pivot;
		if(min < max){
			pivot = partition(data, min, max); // make partitions
			quickSort(data, min, pivot - 1);
			quickSort(data, pivot + 1, max);
		}
	}
	// Creates the partitions need for the quick sort
	public static int partition(Comparable[] data, int min, int max){
		// Use the first element as the partition value
		Comparable partitionValue = data[min];
		
		int left = min;
		int right = max;
		
		while(left < right){
			//Search for an element the is > the partition element
			while(data[left].compareTo(partitionValue) <= 0 && left < right)
				left++;
			//Search for an element the is < the partition element
			while(data[right].compareTo(partitionValue) > 0)
				right--;
			
			if(left < right)
				swap(data, left, right);
		}
		// Move the partition element to its final position
		swap(data, min, right);	
		
		return right;
	}
	
	//------------------------------------------------------------------------------------
	/*
	 * Sorts the specified array of objects using the merge sort
	 * algorithm.
	 */
	public static void mergeSort(Comparable[] data, int min, int max){
		if(min < max){
			int mid = (min + max)/2;
			mergeSort(data, min, mid);
			mergeSort(data, mid + 1, max);
			
			merge(data, min, mid, max);
		}
	}
	
	public static void merge(Comparable[] data, int first, int mid, int last){
		Comparable[] temp = new Comparable[data.length];
		
		int first1 = first, last1 = mid;    // endpoints of first subarray
		int first2 = mid + 1, last2 = last; // endpoints of second subarray
		int index = first1; // nest index open in temp array
		
		while(first1 <= last1 && first2 <= last2){
			if(data[first1].compareTo(data[first2]) < 0){
				temp[index] = data[first1];
				first1++;
			}
			else{
				temp[index] = data[first2];
				first2++;
			}
			index++;
		}
		// Copy remaining elements from first subarray, if any
		while(first1 <= last1)
			temp[index++] = data[first1++];
		
		// Copy remaining elements from second subarray, if any
		while(first2 <= last2)
			temp[index++] = data[first2++];
		
		// Copy merged data into orginal array
		for(index = first; index <= last; index++)
			data[index] = temp[index];
	}
}

output:
Daniilidou, Eleni: 111-111-1111
Federer, Rodger: 222-222-2222
Hewitt, Lleyton: 333-333-3333
Roddic, Andy: 444-444-4444
Sharapove, Maria: 555-555-5555
Williams, Serena: 666-666-6666
Williams, Venus: 777-777-7777



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值