C言語教室 第27回 いろいろなソート(続)(回答提出)(1)
こちらの記事の回答です。
今回、できたのは課題1のみ。
タイトルにある、(続)がついて、さらに(1)ってなんなんだという感じですけど、「いろいろなソート」はkznさんが既に記事を書いていらっしゃって今回はその続編なので(続)です。リンク先の記事には課題が2つ、演習が1つあって、私が今回回答したのは課題1だけです。なので(1)ということになりました。
マージソートよりも「Node」のライブラリ設計に思考を費やしていた感じです。それだけ考えたわりには、なんだかぱっとしない。ほんとに、ライブラリって難しい。カッコイイライブラリヲカイテミタイ....
1.「Node」は循環リストにしてみた
循環リストを使ってみました。終端のある双方向リストと、終端のない循環リストの、どちらがより適当なのかは判断が難しい。結論があったわけではないし、今も明確にはなっていません。どっちも書いてみれば見えてくるのかもしれません。が。今回は循環リストのみ、です。
2.空リストの定義
循環リストの場合は終端がありません。そういう意味では「NULL」はいらないのですが、今回は「NULL」を加えました。
NULL = 空リスト
マージソートの場合、2分割した2つのリストを1つのリストにマージします。このとき、元の2つのリストは「空」になります。この状態を「NULL」と位置付けたわけです。
リストの端を管理するヘッダのようなものを設けるべきかどうか悩みました。
head→node1→node2→・・・→noden
として、マージする対象は「node1~noden」とするというやり方です。この場合、「head」が単独で存在すればリストは空ということになります。
この方法は取らずに、
node1→node2→・・・→noden
だけ、としました。「NULL」で空ということになります。
どちらがいいのか。
ここでも明確な結論はありません。直感的には『「NULL=空」はわかりやすいかな』という程度です。
3.マージ処理は再帰呼出しない
マージ処理は、再帰呼出を使わずに書きました。個人的にはこちらの方が直感的にわかりやすかった。関数呼出しのオーバーヘッドを押さえられる、かな。
4.リストは配列で確保
マージソートするリストは配列で用意しました。malloc も使っていません。ですから数に制限があります。組み込みソフトウェアではよく使う方法です。このノードは、リストをたどる以外にも配列でもアクセスできます。
リストは、191名の、ある有名な方々のお名前です。
5.ソースコード
c27.c
#include <stdio.h>
#include "node.h"
typedef struct {
int number;
char name[128];
} Person;
typedef struct {
Node node;
Person person;
} NodePerson;
char* name_of_NobelFysik[];
void print_node_person(Node* top)
{
NodePerson* current = (NodePerson*)top;
while (1)
{
Person* p = ¤t->person;
printf("%3d.%s\n", p->number, p->name);
current = (NodePerson*)current->node.next;
if (current == (NodePerson*)top)
{
break;
}
}
}
typedef int (*NodeCompare)(Node* node1, Node* node2);
int compare_number(Node* node1, Node* node2){
if ((node1 == NULL) && (node2 == NULL)) { return 0;}
if (node1 == NULL) { return 1; }
if (node2 == NULL) { return -1; }
Person* p1 = &(((NodePerson*)node1)->person);
Person* p2 = &(((NodePerson*)node2)->person);
if (p1->number == p2->number) {
return 0;
}
if (p1->number < p2->number) {
return -1;
} else {
return 1;
}
}
int compare_name(Node* node1, Node* node2){
if ((node1 == NULL) && (node2 == NULL)) { return 0;}
if (node1 == NULL) { return 1; }
if (node2 == NULL) { return -1; }
Person* p1 = &(((NodePerson*)node1)->person);
Person* p2 = &(((NodePerson*)node2)->person);
return strncmp(p1->name, p2->name, sizeof(p1->name));
}
Node* merge_node(Node* node1, Node* node2, NodeCompare cmp) {
Node* merge_node = NULL;
while (1) {
if ((node1 == NULL) && (node2 == NULL)) { break; }
if (cmp(node1, node2) < 0) {
Node* sel_node = node1;
node1 = node_unlink(sel_node);
merge_node = node_link_before(merge_node, sel_node);
} else {
Node* sel_node = node2;
node2 = node_unlink(sel_node);
merge_node = node_link_before(merge_node, sel_node);
}
}
return merge_node;
}
Node* mergeSort(Node* top, NodeCompare cmp) {
/* ノードが一つだけのとき */
if (node_is_alone(top) == 1) {
return top;
}
/* 半分に分割する */
Node* half = node_split(top);
/* 再帰呼出 */
/* 左半分と右半分をそれぞれマージソートする */
Node* left = mergeSort(top, cmp);
Node* right = mergeSort(half, cmp);
/* 分割したノードをマージする */
Node* sorted = merge_node(left, right, cmp);
return sorted;
}
int main()
{
NodePerson NobelFysik[256] = {0};
int i;
for (i = 0; i < 256; i++)
{
node_initialize(&NobelFysik[i].node, i+1);
if (name_of_NobelFysik[i] == NULL)
{
break;
}
NobelFysik[i].person.number = i;
strncpy(NobelFysik[i].person.name,
name_of_NobelFysik[i],
sizeof(NobelFysik[i].person.name));
if (i > 0)
{
node_link_after(
&NobelFysik[i-1].node,
&NobelFysik[i].node);
}
}
print_node_person(&NobelFysik[0].node);
printf("#########################\n");
Node* sorted_name =
mergeSort(&NobelFysik[0].node, compare_name);
printf("#########################\n");
print_node_person(sorted_name);
printf("#########################\n");
Node* sorted_number =
mergeSort(sorted_name, compare_number);
printf("#########################\n");
print_node_person(sorted_number);
printf("#########################\n");
}
char* name_of_NobelFysik[] =
{
"Wilhelm Conrad Rontgen",
"Hendrik Antoon Lorentz",
"Pieter Zeeman",
"Pierre Curie",
"Marie Curie",
"Antoine Henri Becquerel",
"Lord (John William Strutt)Rayleigh",
"Philipp Eduard Anton von Lenard",
"Sir Joseph John Thomson",
"Albert Abraham Michelson",
"Gabriel Lippmann",
"Guglielmo Marconi",
"Carl Ferdinand Braun",
"Johannes Diderik van der Waals",
"Wilhelm Wien",
"Nils Gustaf Dalen",
"Heike Kamerlingh Onnes",
"Max von Laue",
"Sir William Henry Bragg",
"William Lawrence Bragg",
"Charles Glover Barkla",
"Max Karl Ernst Ludwig Planck",
"Johannes Stark",
"Charles-Edouard Guillaume",
"Albert Einstein",
"Niels Henrik David Bohr",
"Robert Andrews Millikan",
"Karl Manne Georg Siegbahn",
"James Franck",
"Gustav Ludwig Hertz",
"Jean Baptiste Perrin",
"Arthur Holly Compton",
"Charles Thomson Rees Wilson",
"Owen Willans Richardson",
"Prince Louis-Victor Pierre Raymond de Broglie",
"Sir Chandrasekhara Venkata Raman",
"Werner Karl Heisenberg",
"Paul Adrien Maurice Dirac",
"Erwin Schrodinger",
"James Chadwick",
"Carl David Anderson",
"Victor Franz Hess",
"Clinton Joseph Davisson",
"George Paget Thomson",
"Enrico Fermi",
"Ernest Orlando Lawrence",
"Otto Stern",
"Isidor Isaac Rabi",
"Wolfgang Pauli",
"Percy Williams Bridgman",
"Sir Edward Victor Appleton",
"Patrick Maynard Stuart Blackett",
"Hideki Yukawa",
"Cecil Frank Powell",
"Sir John Douglas Cockcroft",
"Ernest Thomas Sinton Walton",
"Felix Bloch",
"Edward Mills Purcell",
"Frits (Frederik) Zernike",
"Max Born",
"Walter Wilhelm Georg Franz Bothe",
"Willis Eugene Lamb",
"Polykarp Kusch",
"William Bradford Shockley",
"Walter Houser Brattain",
"John Bardeen",
"Tsung-Dao Lee",
"Chen Ning Yang",
"Pavel Alekseyevich Cherenkov",
"Il´ja Mikhailovich Frank",
"Igor Yevgenyevich Tamm",
"Emilio Gino Segre",
"Owen Chamberlain",
"Donald Arthur Glaser",
"Robert Hofstadter",
"Rudolf Ludwig Mossbauer",
"Lev Davidovich Landau",
"Eugene Paul Wigner",
"Maria Goeppert-Mayer",
"J. Hans D. Jensen",
"Charles Hard Townes",
"Nicolay Gennadiyevich Basov",
"Aleksandr Mikhailovich Prokhorov",
"Julian Schwinger",
"Richard P. Feynman",
"Sin-Itiro Tomonaga",
"Alfred Kastler",
"Hans Albrecht Bethe",
"Luis Walter Alvarez",
"Murray Gell-Mann",
"Hannes Olof Gosta Alfven",
"Louis Eugene Felix Neel",
"Dennis Gabor",
"John Bardeen",
"Leon Neil Cooper",
"John Robert Schrieffer",
"Leo Esaki",
"Ivar Giaever",
"Brian David Josephson",
"Antony Hewish",
"Sir Martin Ryle",
"Aage Niels Bohr",
"Ben Roy Mottelson",
"Leo James Rainwater",
"Burton Richter",
"Samuel Chao Chung Ting",
"Philip Warren Anderson",
"Sir Nevill Francis Mott",
"John Hasbrouck van Vleck",
"Arno Allan Penzias",
"Robert Woodrow Wilson",
"Pyotr Leonidovich Kapitsa",
"Steven Weinberg",
"Sheldon Lee Glashow",
"Abdus Salam",
"James Watson Cronin",
"Val Logsdon Fitch",
"Nicolaas Bloembergen",
"Arthur Leonard Schawlow",
"Kai M. Siegbahn",
"Kenneth G. Wilson",
"Subramanyan Chandrasekhar",
"William Alfred Fowler",
"Carlo Rubbia",
"Simon van der Meer",
"Klaus von Klitzing",
"Gerd Binnig",
"Heinrich Rohrer",
"Ernst Ruska",
"K. Alexander Muller",
"J. Georg Bednorz",
"Leon M. Lederman",
"Melvin Schwartz",
"Jack Steinberger",
"Hans G. Dehmelt",
"Wolfgang Paul",
"Norman F. Ramsey",
"Richard E. Taylor",
"Jerome I. Friedman",
"Henry W. Kendall",
"Pierre-Gilles de Gennes",
"Georges Charpak",
"Russell A. Hulse",
"Joseph H. Taylor Jr.",
"Clifford G. Shull",
"Bertram N. Brockhouse",
"Martin L. Perl",
"Frederick Reines",
"David M. Lee",
"Robert C. Richardson",
"Douglas D. Osheroff",
"Steven Chu",
"Claude Cohen-Tannoudji",
"William D. Phillips",
"Horst L. Stormer",
"Daniel C. Tsui",
"Robert B. Laughlin",
"Gerardus 't Hooft",
"Martinus J.G. Veltman",
"Jack S. Kilby",
"Herbert Kroemer",
"Zhores I. Alferov",
"Carl E. Wieman",
"Wolfgang Ketterle",
"Eric A. Cornell",
"Masatoshi Koshiba",
"Raymond Davis Jr.",
"Riccardo Giacconi",
"Alexei A. Abrikosov",
"Vitaly L. Ginzburg",
"Anthony J. Leggett",
"David J. Gross",
"H. David Politzer",
"Frank Wilczek",
"Roy J. Glauber",
"John L. Hall",
"Theodor W. Haensch",
"John C. Mather",
"George F. Smoot",
"Albert Fert",
"Peter Grunberg",
"Yoichiro Nambu",
"Makoto Kobayashi",
"Toshihide Masakawa",
"Charles K. Kao",
"Willard Boyle",
"George E. Smith",
"Andre Geim",
"Konstantin Novoselov",
"Saul Perlmutter",
"Brian Schmidt",
"Adam Riess",
NULL,
};
node.c
#include <stdio.h>
#include "node.h"
/************************************************/
void node_initialize(Node* node, int id) {
node->next = node;
node->prev = node;
node->id = id;
return;
}
/************************************************/
Node* node_link_after(Node* node1, Node* node2) {
if (node1 == NULL) {return node2;}
if (node2 == NULL) {return node1;}
/* node1:node1_a->node1_b-> ... ->node1_z */
/* node2:node2_a->node2_b-> ... ->node2_z */
Node* node1_a = node1;
Node* node1_b = node1->next;
Node* node2_a = node2;
Node* node2_z = node2->prev;
/* node1_a->node2_a-> ... ->node2_z->node1_b */
node1_a->next = node2_a;
node2_a->prev = node1_a;
node2_z->next = node1_b;
node1_b->prev = node2_z;
return node1;
}
/************************************************/
Node* node_link_before(Node* node1, Node* node2) {
if (node1 == NULL) {return node2;}
if (node2 == NULL) {return node1;}
/* node1:node1_a->node1_b-> ... ->node1_z */
/* node2:node2_a->node2_b-> ... ->node2_z */
Node* node1_a = node1;
Node* node1_z = node1->prev;
Node* node2_a = node2;
Node* node2_z = node2->prev;
/* node1_z->node2_a-> ... ->node2_z->node1_a */
node1_z->next = node2_a;
node2_a->prev = node1_z;
node2_z->next = node1_a;
node1_a->prev = node2_z;
return node1;
}
/************************************************/
Node* node_unlink(Node* node) {
if (node == NULL) {return node;}
if (node_is_alone(node) == 1) {
return NULL;
}
/* ... ->prev->node->next-> ... */
Node* prev = node->prev;
Node* next = node->next;
/* ... ->prev->next-> ... */
prev->next = next;
next->prev = prev;
/* node->node */
node->prev = node;
node->next = node;
return next;
}
/************************************************/
int node_is_empty(Node* node) {
if (node == NULL) {
return 1;
} else {
return 0;
}
}
/************************************************/
int node_is_alone(Node* node) {
if ((node->prev == node) && (node->next == node)) {
return 1;
} else {
return 0;
}
}
/************************************************/
void node_cut(Node* top, Node* cut) {
if ((top == NULL) || (cut == NULL)) {return;}
/* top -> ... -> end1 -> cut -> ... -> end2 */
Node* end1 = cut->prev;
Node* end2 = top->prev;
/* top -> ... -> end1 */
top->prev = end1;
end1->next = top;
/* cut -> ... -> end2 */
cut->prev = end2;
end2->next = cut;
return;
}
/************************************************/
Node* node_get_middle(Node* top) {
if (top == NULL) {return NULL;}
/* top:node_1->node_2->...->node_n */
Node* slow = top;
Node* fast = top;
/* slow = node_1->node_2->node_3->... */
/* fast = node_1->node_3->node_5->... */
while (1) {
slow = slow->next;
fast = fast->next->next;
if (fast == top || fast->next == top) { break; }
}
/* slow = node_i (i = n/2) */
return slow;
}
/************************************************/
Node* node_split(Node* top) {
if (top == NULL) {return NULL;}
/* top:node_1->node_2->...->node_n */
/* half = node_i (i = n/2) */
Node* half = node_get_middle(top);
/* top -> ... -> end1 -> half -> ... -> end2 */
/* top -> ... -> end1 */
/* half -> ... -> end2 */
node_cut(top, half);
return half;
}
/************************************************/
void print_node(Node* top)
{
if (top == NULL) {printf("node is empty.\n");return;}
Node* current = top;
while (1)
{
printf("%d ", current->id);
current = current->next;
if (current == top)
{
break;
}
}
printf("\n");
}
node.h
#ifndef NODE_H
#define NODE_H
typedef struct node {
struct node* next;
struct node* prev;
int id;
} Node;
void node_initialize(Node* node, int id);
Node* node_link_after(Node* node1, Node* node2);
Node* node_link_before(Node* node1, Node* node2);
Node* node_unlink(Node* node);
int node_is_alone(Node* node);
void node_cut(Node* top, Node* cut);
Node* node_get_middle(Node* top);
Node* node_split(Node* top);
void print_node(Node* top);
#endif
6.実行結果
0.Wilhelm Conrad Rontgen
1.Hendrik Antoon Lorentz
2.Pieter Zeeman
3.Pierre Curie
4.Marie Curie
5.Antoine Henri Becquerel
6.Lord (John William Strutt)Rayleigh
7.Philipp Eduard Anton von Lenard
8.Sir Joseph John Thomson
9.Albert Abraham Michelson
10.Gabriel Lippmann
11.Guglielmo Marconi
12.Carl Ferdinand Braun
13.Johannes Diderik van der Waals
14.Wilhelm Wien
15.Nils Gustaf Dalen
16.Heike Kamerlingh Onnes
17.Max von Laue
18.Sir William Henry Bragg
19.William Lawrence Bragg
20.Charles Glover Barkla
21.Max Karl Ernst Ludwig Planck
22.Johannes Stark
23.Charles-Edouard Guillaume
24.Albert Einstein
25.Niels Henrik David Bohr
26.Robert Andrews Millikan
27.Karl Manne Georg Siegbahn
28.James Franck
29.Gustav Ludwig Hertz
30.Jean Baptiste Perrin
31.Arthur Holly Compton
32.Charles Thomson Rees Wilson
33.Owen Willans Richardson
34.Prince Louis-Victor Pierre Raymond de Broglie
35.Sir Chandrasekhara Venkata Raman
36.Werner Karl Heisenberg
37.Paul Adrien Maurice Dirac
38.Erwin Schrodinger
39.James Chadwick
40.Carl David Anderson
41.Victor Franz Hess
42.Clinton Joseph Davisson
43.George Paget Thomson
44.Enrico Fermi
45.Ernest Orlando Lawrence
46.Otto Stern
47.Isidor Isaac Rabi
48.Wolfgang Pauli
49.Percy Williams Bridgman
50.Sir Edward Victor Appleton
51.Patrick Maynard Stuart Blackett
52.Hideki Yukawa
53.Cecil Frank Powell
54.Sir John Douglas Cockcroft
55.Ernest Thomas Sinton Walton
56.Felix Bloch
57.Edward Mills Purcell
58.Frits (Frederik) Zernike
59.Max Born
60.Walter Wilhelm Georg Franz Bothe
61.Willis Eugene Lamb
62.Polykarp Kusch
63.William Bradford Shockley
64.Walter Houser Brattain
65.John Bardeen
66.Tsung-Dao Lee
67.Chen Ning Yang
68.Pavel Alekseyevich Cherenkov
69.Il´ja Mikhailovich Frank
70.Igor Yevgenyevich Tamm
71.Emilio Gino Segre
72.Owen Chamberlain
73.Donald Arthur Glaser
74.Robert Hofstadter
75.Rudolf Ludwig Mossbauer
76.Lev Davidovich Landau
77.Eugene Paul Wigner
78.Maria Goeppert-Mayer
79.J. Hans D. Jensen
80.Charles Hard Townes
81.Nicolay Gennadiyevich Basov
82.Aleksandr Mikhailovich Prokhorov
83.Julian Schwinger
84.Richard P. Feynman
85.Sin-Itiro Tomonaga
86.Alfred Kastler
87.Hans Albrecht Bethe
88.Luis Walter Alvarez
89.Murray Gell-Mann
90.Hannes Olof Gosta Alfven
91.Louis Eugene Felix Neel
92.Dennis Gabor
93.John Bardeen
94.Leon Neil Cooper
95.John Robert Schrieffer
96.Leo Esaki
97.Ivar Giaever
98.Brian David Josephson
99.Antony Hewish
100.Sir Martin Ryle
101.Aage Niels Bohr
102.Ben Roy Mottelson
103.Leo James Rainwater
104.Burton Richter
105.Samuel Chao Chung Ting
106.Philip Warren Anderson
107.Sir Nevill Francis Mott
108.John Hasbrouck van Vleck
109.Arno Allan Penzias
110.Robert Woodrow Wilson
111.Pyotr Leonidovich Kapitsa
112.Steven Weinberg
113.Sheldon Lee Glashow
114.Abdus Salam
115.James Watson Cronin
116.Val Logsdon Fitch
117.Nicolaas Bloembergen
118.Arthur Leonard Schawlow
119.Kai M. Siegbahn
120.Kenneth G. Wilson
121.Subramanyan Chandrasekhar
122.William Alfred Fowler
123.Carlo Rubbia
124.Simon van der Meer
125.Klaus von Klitzing
126.Gerd Binnig
127.Heinrich Rohrer
128.Ernst Ruska
129.K. Alexander Muller
130.J. Georg Bednorz
131.Leon M. Lederman
132.Melvin Schwartz
133.Jack Steinberger
134.Hans G. Dehmelt
135.Wolfgang Paul
136.Norman F. Ramsey
137.Richard E. Taylor
138.Jerome I. Friedman
139.Henry W. Kendall
140.Pierre-Gilles de Gennes
141.Georges Charpak
142.Russell A. Hulse
143.Joseph H. Taylor Jr.
144.Clifford G. Shull
145.Bertram N. Brockhouse
146.Martin L. Perl
147.Frederick Reines
148.David M. Lee
149.Robert C. Richardson
150.Douglas D. Osheroff
151.Steven Chu
152.Claude Cohen-Tannoudji
153.William D. Phillips
154.Horst L. Stormer
155.Daniel C. Tsui
156.Robert B. Laughlin
157.Gerardus 't Hooft
158.Martinus J.G. Veltman
159.Jack S. Kilby
160.Herbert Kroemer
161.Zhores I. Alferov
162.Carl E. Wieman
163.Wolfgang Ketterle
164.Eric A. Cornell
165.Masatoshi Koshiba
166.Raymond Davis Jr.
167.Riccardo Giacconi
168.Alexei A. Abrikosov
169.Vitaly L. Ginzburg
170.Anthony J. Leggett
171.David J. Gross
172.H. David Politzer
173.Frank Wilczek
174.Roy J. Glauber
175.John L. Hall
176.Theodor W. Haensch
177.John C. Mather
178.George F. Smoot
179.Albert Fert
180.Peter Grunberg
181.Yoichiro Nambu
182.Makoto Kobayashi
183.Toshihide Masakawa
184.Charles K. Kao
185.Willard Boyle
186.George E. Smith
187.Andre Geim
188.Konstantin Novoselov
189.Saul Perlmutter
190.Brian Schmidt
191.Adam Riess
#########################
#########################
101.Aage Niels Bohr
114.Abdus Salam
191.Adam Riess
9.Albert Abraham Michelson
24.Albert Einstein
179.Albert Fert
82.Aleksandr Mikhailovich Prokhorov
168.Alexei A. Abrikosov
86.Alfred Kastler
187.Andre Geim
170.Anthony J. Leggett
5.Antoine Henri Becquerel
99.Antony Hewish
109.Arno Allan Penzias
31.Arthur Holly Compton
118.Arthur Leonard Schawlow
102.Ben Roy Mottelson
145.Bertram N. Brockhouse
98.Brian David Josephson
190.Brian Schmidt
104.Burton Richter
40.Carl David Anderson
162.Carl E. Wieman
12.Carl Ferdinand Braun
123.Carlo Rubbia
53.Cecil Frank Powell
20.Charles Glover Barkla
80.Charles Hard Townes
184.Charles K. Kao
32.Charles Thomson Rees Wilson
23.Charles-Edouard Guillaume
67.Chen Ning Yang
152.Claude Cohen-Tannoudji
144.Clifford G. Shull
42.Clinton Joseph Davisson
155.Daniel C. Tsui
171.David J. Gross
148.David M. Lee
92.Dennis Gabor
73.Donald Arthur Glaser
150.Douglas D. Osheroff
57.Edward Mills Purcell
71.Emilio Gino Segre
44.Enrico Fermi
164.Eric A. Cornell
45.Ernest Orlando Lawrence
55.Ernest Thomas Sinton Walton
128.Ernst Ruska
38.Erwin Schrodinger
77.Eugene Paul Wigner
56.Felix Bloch
173.Frank Wilczek
147.Frederick Reines
58.Frits (Frederik) Zernike
10.Gabriel Lippmann
186.George E. Smith
178.George F. Smoot
43.George Paget Thomson
141.Georges Charpak
157.Gerardus 't Hooft
126.Gerd Binnig
11.Guglielmo Marconi
29.Gustav Ludwig Hertz
172.H. David Politzer
90.Hannes Olof Gosta Alfven
87.Hans Albrecht Bethe
134.Hans G. Dehmelt
16.Heike Kamerlingh Onnes
127.Heinrich Rohrer
1.Hendrik Antoon Lorentz
139.Henry W. Kendall
160.Herbert Kroemer
52.Hideki Yukawa
154.Horst L. Stormer
70.Igor Yevgenyevich Tamm
69.Il´ja Mikhailovich Frank
47.Isidor Isaac Rabi
97.Ivar Giaever
130.J. Georg Bednorz
79.J. Hans D. Jensen
159.Jack S. Kilby
133.Jack Steinberger
39.James Chadwick
28.James Franck
115.James Watson Cronin
30.Jean Baptiste Perrin
138.Jerome I. Friedman
13.Johannes Diderik van der Waals
22.Johannes Stark
93.John Bardeen
65.John Bardeen
177.John C. Mather
108.John Hasbrouck van Vleck
175.John L. Hall
95.John Robert Schrieffer
143.Joseph H. Taylor Jr.
83.Julian Schwinger
129.K. Alexander Muller
119.Kai M. Siegbahn
27.Karl Manne Georg Siegbahn
120.Kenneth G. Wilson
125.Klaus von Klitzing
188.Konstantin Novoselov
96.Leo Esaki
103.Leo James Rainwater
131.Leon M. Lederman
94.Leon Neil Cooper
76.Lev Davidovich Landau
6.Lord (John William Strutt)Rayleigh
91.Louis Eugene Felix Neel
88.Luis Walter Alvarez
182.Makoto Kobayashi
78.Maria Goeppert-Mayer
4.Marie Curie
146.Martin L. Perl
158.Martinus J.G. Veltman
165.Masatoshi Koshiba
59.Max Born
21.Max Karl Ernst Ludwig Planck
17.Max von Laue
132.Melvin Schwartz
89.Murray Gell-Mann
117.Nicolaas Bloembergen
81.Nicolay Gennadiyevich Basov
25.Niels Henrik David Bohr
15.Nils Gustaf Dalen
136.Norman F. Ramsey
46.Otto Stern
72.Owen Chamberlain
33.Owen Willans Richardson
51.Patrick Maynard Stuart Blackett
37.Paul Adrien Maurice Dirac
68.Pavel Alekseyevich Cherenkov
49.Percy Williams Bridgman
180.Peter Grunberg
106.Philip Warren Anderson
7.Philipp Eduard Anton von Lenard
3.Pierre Curie
140.Pierre-Gilles de Gennes
2.Pieter Zeeman
62.Polykarp Kusch
34.Prince Louis-Victor Pierre Raymond de Broglie
111.Pyotr Leonidovich Kapitsa
166.Raymond Davis Jr.
167.Riccardo Giacconi
137.Richard E. Taylor
84.Richard P. Feynman
26.Robert Andrews Millikan
156.Robert B. Laughlin
149.Robert C. Richardson
74.Robert Hofstadter
110.Robert Woodrow Wilson
174.Roy J. Glauber
75.Rudolf Ludwig Mossbauer
142.Russell A. Hulse
105.Samuel Chao Chung Ting
189.Saul Perlmutter
113.Sheldon Lee Glashow
124.Simon van der Meer
85.Sin-Itiro Tomonaga
35.Sir Chandrasekhara Venkata Raman
50.Sir Edward Victor Appleton
54.Sir John Douglas Cockcroft
8.Sir Joseph John Thomson
100.Sir Martin Ryle
107.Sir Nevill Francis Mott
18.Sir William Henry Bragg
151.Steven Chu
112.Steven Weinberg
121.Subramanyan Chandrasekhar
176.Theodor W. Haensch
183.Toshihide Masakawa
66.Tsung-Dao Lee
116.Val Logsdon Fitch
41.Victor Franz Hess
169.Vitaly L. Ginzburg
64.Walter Houser Brattain
60.Walter Wilhelm Georg Franz Bothe
36.Werner Karl Heisenberg
0.Wilhelm Conrad Rontgen
14.Wilhelm Wien
185.Willard Boyle
122.William Alfred Fowler
63.William Bradford Shockley
153.William D. Phillips
19.William Lawrence Bragg
61.Willis Eugene Lamb
163.Wolfgang Ketterle
135.Wolfgang Paul
48.Wolfgang Pauli
181.Yoichiro Nambu
161.Zhores I. Alferov
#########################
#########################
0.Wilhelm Conrad Rontgen
1.Hendrik Antoon Lorentz
2.Pieter Zeeman
3.Pierre Curie
4.Marie Curie
5.Antoine Henri Becquerel
6.Lord (John William Strutt)Rayleigh
7.Philipp Eduard Anton von Lenard
8.Sir Joseph John Thomson
9.Albert Abraham Michelson
10.Gabriel Lippmann
11.Guglielmo Marconi
12.Carl Ferdinand Braun
13.Johannes Diderik van der Waals
14.Wilhelm Wien
15.Nils Gustaf Dalen
16.Heike Kamerlingh Onnes
17.Max von Laue
18.Sir William Henry Bragg
19.William Lawrence Bragg
20.Charles Glover Barkla
21.Max Karl Ernst Ludwig Planck
22.Johannes Stark
23.Charles-Edouard Guillaume
24.Albert Einstein
25.Niels Henrik David Bohr
26.Robert Andrews Millikan
27.Karl Manne Georg Siegbahn
28.James Franck
29.Gustav Ludwig Hertz
30.Jean Baptiste Perrin
31.Arthur Holly Compton
32.Charles Thomson Rees Wilson
33.Owen Willans Richardson
34.Prince Louis-Victor Pierre Raymond de Broglie
35.Sir Chandrasekhara Venkata Raman
36.Werner Karl Heisenberg
37.Paul Adrien Maurice Dirac
38.Erwin Schrodinger
39.James Chadwick
40.Carl David Anderson
41.Victor Franz Hess
42.Clinton Joseph Davisson
43.George Paget Thomson
44.Enrico Fermi
45.Ernest Orlando Lawrence
46.Otto Stern
47.Isidor Isaac Rabi
48.Wolfgang Pauli
49.Percy Williams Bridgman
50.Sir Edward Victor Appleton
51.Patrick Maynard Stuart Blackett
52.Hideki Yukawa
53.Cecil Frank Powell
54.Sir John Douglas Cockcroft
55.Ernest Thomas Sinton Walton
56.Felix Bloch
57.Edward Mills Purcell
58.Frits (Frederik) Zernike
59.Max Born
60.Walter Wilhelm Georg Franz Bothe
61.Willis Eugene Lamb
62.Polykarp Kusch
63.William Bradford Shockley
64.Walter Houser Brattain
65.John Bardeen
66.Tsung-Dao Lee
67.Chen Ning Yang
68.Pavel Alekseyevich Cherenkov
69.Il´ja Mikhailovich Frank
70.Igor Yevgenyevich Tamm
71.Emilio Gino Segre
72.Owen Chamberlain
73.Donald Arthur Glaser
74.Robert Hofstadter
75.Rudolf Ludwig Mossbauer
76.Lev Davidovich Landau
77.Eugene Paul Wigner
78.Maria Goeppert-Mayer
79.J. Hans D. Jensen
80.Charles Hard Townes
81.Nicolay Gennadiyevich Basov
82.Aleksandr Mikhailovich Prokhorov
83.Julian Schwinger
84.Richard P. Feynman
85.Sin-Itiro Tomonaga
86.Alfred Kastler
87.Hans Albrecht Bethe
88.Luis Walter Alvarez
89.Murray Gell-Mann
90.Hannes Olof Gosta Alfven
91.Louis Eugene Felix Neel
92.Dennis Gabor
93.John Bardeen
94.Leon Neil Cooper
95.John Robert Schrieffer
96.Leo Esaki
97.Ivar Giaever
98.Brian David Josephson
99.Antony Hewish
100.Sir Martin Ryle
101.Aage Niels Bohr
102.Ben Roy Mottelson
103.Leo James Rainwater
104.Burton Richter
105.Samuel Chao Chung Ting
106.Philip Warren Anderson
107.Sir Nevill Francis Mott
108.John Hasbrouck van Vleck
109.Arno Allan Penzias
110.Robert Woodrow Wilson
111.Pyotr Leonidovich Kapitsa
112.Steven Weinberg
113.Sheldon Lee Glashow
114.Abdus Salam
115.James Watson Cronin
116.Val Logsdon Fitch
117.Nicolaas Bloembergen
118.Arthur Leonard Schawlow
119.Kai M. Siegbahn
120.Kenneth G. Wilson
121.Subramanyan Chandrasekhar
122.William Alfred Fowler
123.Carlo Rubbia
124.Simon van der Meer
125.Klaus von Klitzing
126.Gerd Binnig
127.Heinrich Rohrer
128.Ernst Ruska
129.K. Alexander Muller
130.J. Georg Bednorz
131.Leon M. Lederman
132.Melvin Schwartz
133.Jack Steinberger
134.Hans G. Dehmelt
135.Wolfgang Paul
136.Norman F. Ramsey
137.Richard E. Taylor
138.Jerome I. Friedman
139.Henry W. Kendall
140.Pierre-Gilles de Gennes
141.Georges Charpak
142.Russell A. Hulse
143.Joseph H. Taylor Jr.
144.Clifford G. Shull
145.Bertram N. Brockhouse
146.Martin L. Perl
147.Frederick Reines
148.David M. Lee
149.Robert C. Richardson
150.Douglas D. Osheroff
151.Steven Chu
152.Claude Cohen-Tannoudji
153.William D. Phillips
154.Horst L. Stormer
155.Daniel C. Tsui
156.Robert B. Laughlin
157.Gerardus 't Hooft
158.Martinus J.G. Veltman
159.Jack S. Kilby
160.Herbert Kroemer
161.Zhores I. Alferov
162.Carl E. Wieman
163.Wolfgang Ketterle
164.Eric A. Cornell
165.Masatoshi Koshiba
166.Raymond Davis Jr.
167.Riccardo Giacconi
168.Alexei A. Abrikosov
169.Vitaly L. Ginzburg
170.Anthony J. Leggett
171.David J. Gross
172.H. David Politzer
173.Frank Wilczek
174.Roy J. Glauber
175.John L. Hall
176.Theodor W. Haensch
177.John C. Mather
178.George F. Smoot
179.Albert Fert
180.Peter Grunberg
181.Yoichiro Nambu
182.Makoto Kobayashi
183.Toshihide Masakawa
184.Charles K. Kao
185.Willard Boyle
186.George E. Smith
187.Andre Geim
188.Konstantin Novoselov
189.Saul Perlmutter
190.Brian Schmidt
191.Adam Riess
#########################