iOS 개발 의 데이터 구조 와 알고리즘

4317 단어
우리 개발 에서 하나의 응용 생명 주 기 를 이해 하 는 것 이 필요 합 니 다. 오늘 은 이렇게 여러 해 동안 접 한 생명 주 기 를 정리 하 겠 습 니 다. 많은 가르침 을 환영 합 니 다 ~ 쓸데없는 말 하지 않 고 시작 하 겠 습 니 다 ~
데이터 구조
1. 집합 구조, 선형 구조, 나무 구조, 도형 구조
1.    :          ,            
2.    :         (  、  ),              
3.    :           ,            
4.    :  、  、  ,    ,            

2. 데이터 구조의 저장
1.      (      、       ---     ,      )
2.      (12345     ,        1(  )2(  )5(  )3(  )4(  ),              ,           ,1(  )1            2,2       3,       ,              )

3. 단 방향 링크, 양 방향 링크, 순환 링크
1.    :A->B->C->D->E,E  A  ,           
2.    :EB->C->D->E,    ,   ,      ,        
3.    :->A->B->C->D->E->,    

4. 이 진 트 리, 밸 런 스 이 진 트 리
1.   :    +      ,           ,       
          :
    (1)   ,   
    (2)     
    (3)     
    (4)     
    (5)      

알고리즘
1. 거품 정렬
// 1.      
NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"16", @"28", @"6", @"8",  @"66", nil]

// 2.    
for (int i = 0; i < arr.count - 1; i++)
{
  for (int j = 0; j < arr.count - 1 - i; j++)
  {
    //     
    if ([arr[j] intValue] > [arr[j + 1] interValue])
    {
      //     
      int temp = [arr[j] interValue];
      arr[j] = arr[j + 1];
      arr[j + 1] = [NSString stringWithFormat:@"%d", temp];
    }
  }
}

// 3.     
NSLog(@"    :%@", arr);

2. 정렬 선택
// 1.      
NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"16", @"28", @"6", @"8",  @"66", nil]

// 2.    
for (int i = 0; i < arr.count - 1; i++)
{
  for (int j = i + 1; j < arr.count; j++)
  {
    //   
    if ([arr[i] intValue] > [arr[j] interValue])
    {
      //   
      int temp = [arr[i] interValue];
      arr[i] = arr[j];
      arr[j] = [NSString stringWithFormat:@"%d", temp];
    }
  }
}

// 3.     
NSLog(@"    :%@", arr);

3. 정렬 삽입
NSMutableArray *list = [NSMutableArray = arrayWithObjects:@"16", @"18", @"6", @"8", @"66", nil];
for (int i = 1; i < [list count]; i++)
{
  int j = i;
  NSInteger temp = [[list objectAtIndex:i] integerValue];
  while (j > 0 && temp < [[list objectAtIndex:j-1] integerValue])
  {
      [list replaceObjectAtIndex:J withObject:[list objectAtIndex:(j - 1)]];
      j--;
  }
  [list replaceObjectAtIndex:j withObject:[NSNumber numberWithInteger:temp]];
}
NSLog(@"    :%@", list);

4. 힐 정렬
NSMutableArray *list = [NSMutableArray = arrayWithObjects:@"16", @"18", @"6", @"8", @"66", nil];
int gap = [list count] / 2.0;
while (gap >= 1)
{
  for (int I = gap; i < [list count]; i++)
  {
      NSInteger temp = [[list objectAtIndex:i] integerValue];
      int j = I;
      while (j >= gap && temp < [[list objectAtIndex:(j-gap)] integerValue])
      {
        [list replaceObjectAtIndex:j withObject:[list objectAtIndex:j - gap]];
      }
      [list replaceObjectAtIndex:j withObject:[NSNumber numberWithInteger:temp]];
  }
  gap = gap / 2;
}
NSLog(@"    :%@", list);

1.    
if (low < height)
{
  NSInteger mid = (low + height) / 2;
  if (key == arr[mid])
  {
    return mid;
  } else if (key < arr[mid])
  {
    return [self erFenChaZhaoSuanFa:arr low:low High:mid - 1 Data:key];
  } else
  {
    return [self erFenChaZhaoSuanFa:arr low:mid + 1 High:hight Data:key];
  }
} else 
{
  NSLog(@"    ");
  return -1;
}
2.  
- (void)kuaisupaixu:(NSMutableArray *)arr low:(NSInteger)left High:(NSInteger)right
{
  if(left <= right) return;
  NSInteger I = left;
  NSInteger j = right;
  NSInteger key = [arr[left] integerValue];

  while (I < j) {
    while (I < j && key <= [arr[j] integerValue]) {
      j--;
    }
    arr[i] = arr[j];
    while (I < j && key >= [arr[I] integerValue]) {
      I++;
    }
    arr[j] = arr[i];
   }
    arr[i] = [NSNumber numberWithInteger:key];
    [self kuaisupaixu:arr low:left high:i-1];
    [self kuaisupaixu:arr low:i+1 high:right];
}


참고 글 iOS 데이터 구조 및 알고리즘

좋은 웹페이지 즐겨찾기