fix: quick sort
This commit is contained in:
		
							parent
							
								
									b1e74292c4
								
							
						
					
					
						commit
						f0f5ffaf5e
					
				
							
								
								
									
										
											BIN
										
									
								
								quick_sort/q_sort
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								quick_sort/q_sort
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							| @ -60,6 +60,7 @@ int right | |||||||
|     return j; |     return j; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| /***********************************
 | /***********************************
 | ||||||
| クイックソートを行う | クイックソートを行う | ||||||
| ***********************************/ | ***********************************/ | ||||||
| @ -82,6 +83,55 @@ int right | |||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /***********************************
 | ||||||
|  |  クイックソートを行う | ||||||
|  | ***********************************/ | ||||||
|  | int | ||||||
|  | quick_sort( | ||||||
|  | int *array, | ||||||
|  | int left, | ||||||
|  | int right | ||||||
|  | ) | ||||||
|  | { | ||||||
|  |     int right_index, left_index, pivot; | ||||||
|  | 
 | ||||||
|  |     if ( left >= right ) | ||||||
|  |     { | ||||||
|  |         return -1; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     left_index = left; | ||||||
|  |     right_index = right; | ||||||
|  |     pivot = left; | ||||||
|  | 
 | ||||||
|  |     for ( ; left_index < right_index ; ) | ||||||
|  |     { | ||||||
|  |         for ( ; array[left_index] < array[pivot] ; ) | ||||||
|  |         { | ||||||
|  |             left_index++; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         right_index--; | ||||||
|  |          | ||||||
|  |         for ( ; array[right_index] > array[pivot] ; ) | ||||||
|  |         { | ||||||
|  |             right_index--; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         if ( left_index < right_index ) | ||||||
|  |         { | ||||||
|  |             swap(&array[right_index], &array[left_index]); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     swap(&array[pivot], &array[right_index]); | ||||||
|  | 
 | ||||||
|  |     quick_sort(array, left, right_index - 1); | ||||||
|  |     quick_sort(array, right_index + 1, right); | ||||||
|  | 
 | ||||||
|  |     return 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| /***********************************
 | /***********************************
 | ||||||
| メイン関数 | メイン関数 | ||||||
| ***********************************/ | ***********************************/ | ||||||
| @ -102,7 +152,7 @@ main() | |||||||
|     int length = sizeof(array) / sizeof(int); |     int length = sizeof(array) / sizeof(int); | ||||||
| 
 | 
 | ||||||
|     printf("Length: %d\n", length); |     printf("Length: %d\n", length); | ||||||
|     q_sort(array, 0, length); |     quick_sort(array, 0, length); | ||||||
| 
 | 
 | ||||||
|     int i ; |     int i ; | ||||||
|      |      | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user