데이터 구조 와 알고리즘개념 및 선형 순서 표
컴퓨터 에 저장 되 고 식별 되 며 계산 할 수 있 는 것 을 모두 데이터 (바 이 너 리) 하 드 디스크 라 고 한다. MP3, jpg, doc, avi, exe, txt 메모리 에서 변수, 상수, 배열, 대상, 바이트 코드
데이터 와 데이터 간 의 일종 또는 여러 가지 특정한 관계
데이터 구조 = 데이터 + 데이터 간 의 관계
이 세계 에서 흩 어 진 데 이 터 는 연속 적 인 데이터 보다 많 습 니 다. 어떻게 흩 어 진 데 이 터 를 '정연 하고 획일 적' 으로 후속 작업 을 편리 하 게 합 니까?, 과 에서 이론 적 기초 데이터 구 조 를 제공 하 는 것 은 구체 적 인 실시 방안 (주로 이산 수학 에 의존) 이다.
분 산 된 것 처럼 보 이 는 데 이 터 를 어떤 방식 으로 연결 하면 그 중에서 규칙 을 찾 을 수 있 습 니 다. 기계 학습 이라는 세 계 는 일정한 규칙 이 있 습 니 다. 어떻게 규칙 을 찾 는 지 는 모두 데이터 - 빅 데이터 에 의존 합 니 다.
계산법 의 개술
특정 문 제 를 해결 하 는 절차 에 대한 설명 이다.컴퓨터 에서 명령 의 질서 있 는 서열 로 나타 나 고 모든 명령 은 하나 이상 의 조작 을 나타 낸다. 말하자면 한 문 제 를 해결 하 는 절차 가 같은 문 제 를 해결 하 는 것 이다. 여러 가지 서로 다른 해결 방안 이 있 을 수 있다. 즉, 서로 다른 알고리즘 으로 같은 문 제 를 해결 할 수 있다 는 것 이다.
설계 알고리즘 은 프로그램 운행 의 효율 을 높 여야 한다. 여기 서 효율 은 대부분 알고리즘 의 집행 시간 을 가리킨다.
사후 통계 방법:
이런 방법 은 주로 설 계 된 프로그램 과 데 이 터 를 통 해 컴퓨터 타 이 머 를 이용 하여 서로 다른 알고리즘 프로그램의 운행 시간 을 비교 하여 알고리즘 효율 의 높 고 낮 음 을 확정 하 는 것 이다. 그러나 이렇게 하면 많은 결함 이 있 을 수 있다.
사후 분석 추산 방법:
이러한 방법 은 주로 컴퓨터 프로그램 이 작성 되 기 전에 통계 방법 에 따라 알고리즘 기종 에 대해 고급 프로그램 언어 로 작 성 된 프로그램 이 컴퓨터 에서 실 행 될 때 소모 하 는 시간 은 다음 과 같은 요소 에 달 려 있다.
선형 표 의 순서 저장 구조
package com.oupeng. ;
/**
* List
* @author Administrator
*
* @param
*/
public interface List<E> {
/**
* ( )
* @return
*/
public int getSize();
/**
*
* @return
*/
public boolean isEmpty();
/**
* index e
* @param index 0<=index
public void add(int index,E e);
/**
*
* @param e size
*/
public void addFirst(E e);
/**
*
* @param e size
*/
public void addLast(E e);
/**
* Index
* @param index
* @return
*/
public E get(int index);
/**
*
* @return index=0
*/
public E getFirst();
/**
*
* @return index=size-1
*/
public E getLast();
/**
* Index e
* @param index
* @param e
*/
public void set(int index,E e);
/**
* e
* @param e
* @return
*/
public boolean contains(E e);
/**
* e
* @param e
* @return
*/
public int find(E e);
/**
*
* @param index 0
public E remove(int index);
/**
*
* @return
*/
public E removeFirst();
/**
*
* @return
*/
public E removeList();
/**
* e
* @param e
*/
public void removeElement(E e);
/**
*
*/
public void clear();
}
package com.oupeng. ;
/**
* List- -
* @author Administrator
*
* @param
*/
public class ArrayList<E> implements List<E>{
private static int DEFAULT_SIZE=10; //
private E[] data; //
private int size; //
//data.length Capacity
public ArrayList(){
this(DEFAULT_SIZE);
}
/**
* capacity
* @param capacity
*/
public ArrayList(int capacity){
this.data=(E[]) new Object[capacity];
this.size=0;
}
/**
*
* @param arr
*/
public ArrayList(E[] arr){
}
@Override
public int getSize() {
// TODO Auto-generated method stub
return size;
}
@Override
public boolean isEmpty() {
return size==0;
}
@Override
public void add(int index, E e) {
if(index<0||index>size){
throw new ArrayIndexOutOfBoundsException("add ");
}
//
if(size==data.length){
resize(2*data.length);
}
for (int i = size-1; i >=index; i--) {
data[i+1]=data[i];
}
data[index]=e;
size++;
}
/**
* data ( , )
* @param newlen
*/
private void resize(int newlen){
E[] newData = (E[]) new Object[newlen];
for(int i=0; i<size;i++){
newData[i]=data[i];
}
data=newData;
}
@Override
public void addFirst(E e) {
add(0,e);
}
@Override
public void addLast(E e) {
add(size,e);
}
@Override
public E get(int index) {
if(index<0||index>size-1){
throw new ArrayIndexOutOfBoundsException("get ");
}
return data[index];
}
@Override
public E getFirst() {
return get(0);
}
@Override
public E getLast() {
return get(size-1);
}
@Override
public void set(int index, E e) {
if(index<0||index>size-1){
throw new ArrayIndexOutOfBoundsException("set ");
}
data[index]=e;
}
@Override
public boolean contains(E e) {
if(isEmpty()){
return false;
}
for(int i=0; i<size;i++){
if(data[i]==e){
return true;
}
}
return false;
}
@Override
public int find(E e) {
if(isEmpty()){
return -1;
}
for (int i = 0; i < size; i++) {
if(data[i]==e){
return i;
}
}
return 0;
}
@Override
public E remove(int index) {
if(index<0||index>size-1){
throw new ArrayIndexOutOfBoundsException(" ");
}
E e=get(index);
for (int i = index+1; i <=size-1; i++) {
data[i-1]=data[i];
}
size--;
//
if(data.length>DEFAULT_SIZE&&size<=data.length/4){
resize(data.length/2);
}
return e;
}
@Override
public E removeFirst() {
return remove(0);
}
@Override
public E removeList() {
return remove(size-1);
}
@Override
public void removeElement(E e) {
int index = find(e);
if(index==-1){
throw new IllegalArgumentException(" ");
}
remove(index);
}
@Override
public void clear() {
size=0;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("ArrayList:size="+size+",capacity="+data.length+"
");
if(isEmpty()){
sb.append("[]");
}else{
sb.append("[");
for (int i = 0; i < size; i++) {
sb.append(data[i]);
if(i==size-1){
sb.append(']');
}else{
sb.append(',');
}
}
}
return sb.toString();
}
public int getCapacity(){
return data.length;
}
public void swap(int i,int j){
// i j
E temp = data[i];
data[i] = data[j];
data[j] = temp;
}
@Override
public boolean equals(Object obj) {
if(obj==null){
return false;
}
if(obj==this){
return true;
}
if(obj instanceof ArrayList){
ArrayList l = (ArrayList) obj;
if(getSize()==l.getSize()){
for(int i=0;i<getSize();i++){
if(get(i)!=l.get(i)){
return false;
}
}
return true;
}
}
return false;
}
}
Leetcode 시험 문제
1. 정수 배열 nums 와 목표 값 target 을 지정 합 니 다. 이 배열 에서 목표 값 의 두 정 수 를 찾 아 그들의 배열 아래 표 시 를 되 돌려 주 십시오.
너 는 모든 입력 이 하나의 답안 에 만 대응 할 것 이 라 고 가정 할 수 있다.그러나 이 배열 의 같은 요 소 를 반복 적 으로 이용 해 서 는 안 된다.
예시:
주어진 nums = [2, 7, 11, 15], target = 9 nums [0] + nums [1] = 2 + 7 = 9 때문에 [0, 1] 로 돌아 갑 니 다.
class Solution {
public int[] twoSum(int[] nums, int target) {
for(int i = 0; i< nums.length; i++){
for(int j = i+1; j<nums.length; j++){
if(nums[i] == target-nums[j]){
return new int[]{i,j};
}
}
}
return new int[]{-1,-1};
}
}
사고: 주제 의 뜻 에 따라 한 번 의 배열 을 옮 겨 다 니 는 토대 에서 한 번 더 옮 겨 다 니 며 배열 의 두 값 이 주어진 값 과 같 으 면 첫 번 째 와 두 번 째 로 옮 겨 다 니 는 위 치 를 되 돌려 줍 니 다. 그렇지 않 으 면 찾 지 못 하고 [- 1, - 1] 로 돌아 갑 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 범 형 실현 의 양 방향 링크데이터 구조 링크 에 대한 상세 한 설명 은 이동 하 십시오. 링크 및 관련 함수 구현 자바 가 실현 하 는 일반 양 방향 링크 는 참고 할 수 있 습 니 다. 자바 가 실현 한 양 방향 링크 링크 일반적인 도입 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.