数据结构

Posted mrtanjuncai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构相关的知识,希望对你有一定的参考价值。

***********************特殊的线性表-------栈****************************

栈: 先进后出、后进先出


栈的插入运算 叫做入栈

栈的删除运算 叫做出栈

演示代码:

package com.chapter11;

//栈的接口
public interface IStack {

public void push(Object obj) throws Exception;

public Object pop() throws Exception;

public boolean isEmpty();
}

栈的实现类

package com.chapter11;

//使用顺序存储方式栈
public class StackImpl implements IStack{

private Object[] arr = new Object[5];

private int top = -1;
@Override
public void push(Object obj) throws Exception {

if(top>=arr.length-1){ //栈满
throw new Exception("栈满了");
}else{
top++;
arr[top] = obj;
System.out.println(obj + "入栈了");
}
}

@Override
public Object pop() throws Exception {
Object obj = null;

if(isEmpty()){//栈空
throw new Exception("栈空了");
}else{


obj = arr[top];

System.out.println(obj + "出栈了");

arr[top] = null;

top--;
}

return obj;
}

@Override
public boolean isEmpty() {
return top==-1;
}


public static void main(String[] args) throws Exception{
IStack stack = new StackImpl();

stack.push("aaa");
stack.push("bbb");
stack.push("ccc");
stack.push("ddd");
stack.push("eee");

stack.push("eee");

/*stack.pop();
stack.pop();
stack.pop();
stack.pop();
stack.pop();

stack.pop();*/
}
}

 

***************************选择排序*****************************

int[] intArr = {26,7,16,23,33,8};


第一轮: 选择出最小的 和第一个数进行交换

比较结果
{7, 26,16,23,33,8}


第二轮比较结果


{7,8, 16,23,33,26}


第三轮比较结果


{7,8,16, 23,33,26}


第四轮比较结果


{7,8,16,23, 33,26}


第五轮比较结果

{7,8,16,23,26, 33}

 

演示代码:

package com.chapter11;

/**
* 公司:蓝桥软件学院 作者:zhangzy 时间:2017年7月14日 下午2:17:08 功能:演示选择排序
*/
public class TestChoiceSorted {

public static void main(String[] args) {

int[] intArr = { 26, 7, 16, 23, 33, 8};

int temp;
// 总共比较多少轮 = 元素个数 - 1

// 一共比较了多少次 = n*(n-1)/2
//时间复杂度 O(n方)
//空间复杂度O(1)
//每一轮比较了多少次 = 元素的个数 - 轮数 次
//第一轮 比较了5次
//第二轮 比较了4次
//第三轮 3次
//第四轮 2次
//第五轮 1次
for (int j = 0; j < intArr.length - 1; j++) {

// 先写一轮
// 第一轮: 选择出最小的 和第一个交换
// 如何找最小
// 打擂台: 假设第一个数是最小的 然后和后面的数进行比较

int min = j;// 假设第一个数是最小的
for (int i = min + 1; i < intArr.length; i++) {

if (intArr[min] > intArr[i]) {
min = i;
}
}

if (min != j) {

// temp intArr[min] intArr[0]
temp = intArr[min];
intArr[min] = intArr[j];
intArr[j] = temp;
}
}

System.out.println("选择排序后");

for (int i : intArr) {
System.out.print(i + " ");
}

}
}







































































































以上是关于数据结构的主要内容,如果未能解决你的问题,请参考以下文章

在数据结构中数据、数据元素、数据对象、数据结构、存储结构、数据类型以及抽象数据类型的定义分别是啥

数据结构与数据类型有啥区别?

数据结构都有哪些

数据结构和数据类型的区别

数据结构哪些是四种常见的逻辑结构

数据结构基本概念