栈和队列的学习

本文介绍了队列和栈两种基础数据结构,队列遵循先进先出原则,而栈则是先进后出。特别地,当使用LinkedList作为Queue的实现时,应注意避免使用List的方法。此外,文章还提供了快速排序的Java实现代码,展示了该算法的核心逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于队列而言,其是先进先出,对于栈而言,是先进后出

 栈

 队列

 

 

 注意:当用LinkedList作为Queue的实现类时,其同时具有List集合的add,remove方法和Queue的poll和peek方法,注意当其作为一个队列使用时,注意不要使用add和remove方法

队列三种实现方式

 

 

 

 

 

 

 

 

 

 补充:快排代码

package Sort;
 
public class 快速排序 {
	public static void main(String[] args) {
		int[] arr = {6,1,2,7,9,3,4,5,10,8};
		sort(arr, 0, arr.length-1);
		print(arr); 
	}
	
	public static void sort(int[] arr,int leftBound,int rightBound) {
		if(leftBound >= rightBound) return;
		int mid= partition(arr, leftBound, rightBound); //得到轴的位置
		sort(arr, leftBound, mid-1); //左边排序
		sort(arr, mid+1, rightBound); //右边排序
	}
	static int partition(int[] arr, int leftBound,int rightBound) {
		int pivot = arr[rightBound]; //指定数组最右边的数是用来比较的值 轴
		int left = leftBound;
		int right = rightBound - 1;
		
		while (left <= right) {
			while(left <= right && arr[left] <= pivot) left++;
			while(left <= right && arr[right] > pivot) right--;
			
			if (left < right) {
				//如果 左边的数比右边的数小  两个数交换
				swap(arr, left, right);
			}
		}
		//把left最后一次指向的位置与pivot(轴)的位置交换
		swap(arr, left, rightBound);
		
		return left; //返回轴的位置
	}
	
	static void swap(int[] arr,int i,int j) {
		int temp = arr[i];
		arr[i] = arr[j];
		arr[j] = temp;
	}
	static void print(int[] arr) {
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
			
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值