二分探索木
先日の大学院の入試でデータ構造の定義や挿入のプログラム記述などピンポイントで出ました.超ラッキー
クイックソート
#include <stdio.h> #include <stdlib.h> #define swap(type, x ,y) do {type t = x; x = y; y = t;} while(0) void __quick_sort ( int* a, int left, int right ) { int pl, pr; int mid; int pivot; if ( left < right ) { // 中央の要素をpivotとする. mid = ( left + right ) / 2; pivot = a[mid]; pl = left; pr = right; while ( pl <= pr ) { while ( a[pl] < pivot ) { ++pl; } // 左側のポインタの移動. while ( a[pr] > pivot ) { --pr; } // 右側のポインタの移動. if ( pl >= pr ) { break; } if ( pl < pr ) { swap ( int, a[pl], a[pr] ); pl++; pr--; } } if ( left < pl - 1 ) // 軸の左側に要素を2つ以上あれば再帰. { __quick_sort ( a, left, pl - 1 ); } if ( pr + 1 < right ) // 軸の左側に要素を2つ以上あれば再帰. { __quick_sort ( a, pr + 1, right ); } } } void quick_sort ( int* a, int size ) { __quick_sort ( a, 0, size - 1 ); } int main ( void ) { int a[] = { 10, 20, 30, 5, 26, 2, 87, 12, 22, 7 }; int size = sizeof ( a ) / sizeof ( a[0] ); printf ( "ソート前の要素の表示\n" ); for ( int i = 0; i < size; ++i ) { printf ( "%d ", a[i] ); } printf ( "\n" ); quick_sort ( a, size ); printf ( "ソート前の要素の表示\n" ); for ( int i = 0; i < size; ++i ) { printf ( "%d ", a[i] ); } printf ( "\n" ); }
マージソート
久々にC言語つかいました.
院試勉強の一環ですが懐かしい...
#include <stdio.h> #include <stdlib.h> int *buff; // 再帰呼び出し用 void __merge_sort ( int* a, int left, int right ) { if ( left < right ) { int mid = ( left + right ) / 2; // 左半分ソートの再帰呼び出し __merge_sort ( a, left, mid ); // 右半分ソートの再帰呼び出し __merge_sort ( a, mid+1, right ); int i, j; // buffに左半分を順に保存 for ( i = left; i <= mid; i++ ) buff[i] = a[i]; // buffに右半分を逆順に保存 for ( j = right; i <= right; i++, j-- ) buff[i] = a[j]; i = left; j = right; int k; for ( k = left; k <= right; k++ ) if ( buff[i] > buff[j] ) a[k] = buff[j--]; else a[k] = buff[i++]; } } int merge_sort ( int* a, int size ) { if ( ( buff = calloc ( size, sizeof ( int ) ) ) == NULL ) return -1; __merge_sort ( a, 0, size-1 ); return 0; } int main ( void ) { int a[] = { 10, 20, 30, 5, 26, 2, 87, 12, 22, 7 }; int size = sizeof ( a ) / sizeof ( a[0] ); printf ( "ソート前の要素の表示\n" ); for ( int i = 0; i < size; ++i ) { printf ( "%d ", a[i] ); } printf ( "\n" ); merge_sort ( a, size ); printf ( "ソート前の要素の表示\n" ); for ( int i = 0; i < size; ++i ) { printf ( "%d ", a[i] ); } printf ( "\n" ); }
GitHub:Shopで買い物した.
GitHub:ShopでPayPalを使ってお買い物
先月, github:shopを使って初海外通販をしました.
とても簡単でPayPalに英語表記の住所や氏名を登録して, 会計の際にその住所を選択するというだけでした. 送料が20.00ドルかかった.
どのくらいで届いたか
注文したのは3/20で, Shipping Confirmationが届いたのが3/26, 自宅に届いのが4/3で約2週間ほどかかりました. Shipping Confirmationには追跡用のURLがはられていたのですが, ロサンゼルスを通過したよっていうお知らせを最後に自宅に届くまで一切の情報がてにはいりませんでした...