[proofplan]
We prove the classification by comparing three operations: choosing hemisphere product charts, changing those product charts, and deforming a clutching map. First we justify that closed hemispheres admit product descriptions for vector bundles, because each closed hemisphere is contractible and vector bundles over contractible bases are product bundles. The transition function on the equator is exactly the clutching map. Changes of the two product charts multiply the clutching map on the left and right by boundary values of maps extending over the hemispheres; for $n \geq 2$ these boundary values are homotopic to constants in components of $GL(k,\mathbb{R})$. Finally, a homotopy of clutching maps gives compatible endpoint bundles, and the null-homotopy extension across a disk produces the required bundle isomorphism.
[/proofplan]
[step:Construct a vector bundle from each clutching map]
Let $F$ denote either $\mathbb{R}^k$ or $\mathbb{C}^k$, and let $G$ denote $GL(k,\mathbb{R})$ or $GL(k,\mathbb{C})$ accordingly. For a continuous map
\begin{align*}
g: S^{n-1} \to G,
\end{align*}
define $E_g$ to be the quotient of the disjoint union
\begin{align*}
(D_+^n \times F) \sqcup (D_-^n \times F)
\end{align*}
by the [equivalence relation](/page/Equivalence%20Relation)
\begin{align*}
(x,v)_+ \sim (x,g(x)v)_-
\end{align*}
for every $x \in S^{n-1}$ and every $v \in F$. The projection maps $(x,v)_\pm \mapsto x$ agree on equivalent points, so they define a continuous map
\begin{align*}
\pi_g: E_g \to S^n.
\end{align*}
Over the interiors of $D_+^n$ and $D_-^n$, the quotient map is identified with the product projection onto the first factor. It remains to define product coordinates near the equator without evaluating $g$ away from its domain. Let $x_0 \in S^{n-1}$. We use the explicit collar of the equator in the sphere. View $S^n$ as the unit sphere in $\mathbb{R}^{n+1}$ and view $S^{n-1}$ as the subset with last coordinate equal to $0$. Define
\begin{align*}
W := \{y=(y_1,\dots,y_{n+1})\in S^n : |y_{n+1}|<1\}.
\end{align*}
For $y\in W$, define the retraction
\begin{align*}
r: W \to S^{n-1}
\end{align*}
by
\begin{align*}
r(y)=\frac{(y_1,\dots,y_n,0)}{\sqrt{y_1^2+\cdots+y_n^2}}.
\end{align*}
The denominator is non-zero on $W$, so $r$ is continuous and satisfies $r(x)=x$ for every $x\in S^{n-1}$. After shrinking around $x_0$, choose an open neighbourhood $U\subset W$ of $x_0$. Define the extended transition map $\widetilde g: U \to G$ by
\begin{align*}
\widetilde g(x)=g(r(x)).
\end{align*}
The map $\widetilde g$ is continuous because $g$ and $r$ are continuous, and $\widetilde g|_{U\cap S^{n-1}}=g|_{U\cap S^{n-1}}$. Define a local trivialization over $U$ as follows: a class represented by $(x,v)_+$ is sent to $(x,v)\in U\times F$, and a class represented by $(x,w)_-$ is sent to $(x,\widetilde g(x)^{-1}w)\in U\times F$. On the equator this is compatible with the gluing relation, since
\begin{align*}
\widetilde g(x)^{-1}g(x)v=v
\end{align*}
for $x\in U\cap S^{n-1}$. Its inverse sends $(x,v)$ to the class of $(x,v)_+$ on $U\cap D_+^n$ and to the class of $(x,\widetilde g(x)v)_-$ on $U\cap D_-^n$. These formulae agree on the equator by the defining relation, are continuous because inversion and multiplication are continuous in $G$, and are fibrewise linear. Together with the product charts over the two hemisphere interiors, these local coordinates make $\pi_g:E_g\to S^n$ a rank $k$ vector bundle.
[/step]
[step:Recover the clutching map from hemisphere product charts]
Let
\begin{align*}
\pi: E \to S^n
\end{align*}
be a rank $k$ vector bundle. The closed hemispheres $D_+^n$ and $D_-^n$ are compact Hausdorff, hence paracompact, and are contractible because each is homeomorphic to the closed disk. By the triviality theorem for vector bundles over contractible paracompact bases, applied to the restrictions of $E$ over these two closed disks, the bundles $E|_{D_+^n}$ and $E|_{D_-^n}$ are isomorphic to product bundles. Choose bundle product charts $\Phi_+: E|_{D_+^n} \to D_+^n \times F$ and $\Phi_-: E|_{D_-^n} \to D_-^n \times F$. For each $x \in D_+^n$, let $\Phi_+(x):E_x\to F$ denote the fibre coordinate map determined by $\Phi_+$, and for each $x\in D_-^n$, let $\Phi_-(x):E_x\to F$ denote the fibre coordinate map determined by $\Phi_-$.
For each $x \in S^{n-1}$, the map
\begin{align*}
\Phi_-(x)\circ \Phi_+(x)^{-1}: F \to F
\end{align*}
is a linear isomorphism. Thus the transition function $g_{\Phi_+,\Phi_-}: S^{n-1} \to G$, defined by
\begin{align*}
g_{\Phi_+,\Phi_-}(x) = \Phi_-(x)\circ \Phi_+(x)^{-1},
\end{align*}
is continuous. Indeed, in product coordinates the map $x \mapsto \Phi_-(x)\circ \Phi_+(x)^{-1}$ is the transition function between two vector bundle charts, and transition functions are continuous by the definition of a vector bundle atlas. Gluing the two trivial bundles by $g_{\Phi_+,\Phi_-}$ reconstructs $E$, because the quotient identifies exactly those vectors that represent the same element of $E$ over the equator.
[guided]
The purpose of this step is to show that clutching maps are not extra structure: they are exactly what remains after the bundle has been trivialized on the two hemispheres.
Let
\begin{align*}
\pi: E \to S^n
\end{align*}
be a rank $k$ vector bundle. The restrictions to the two closed hemispheres are trivial for a specific reason: $D_+^n$ and $D_-^n$ are compact Hausdorff, hence paracompact, and each is contractible because it is homeomorphic to the closed disk. The triviality theorem for vector bundles over contractible paracompact bases therefore applies to $E|_{D_+^n}$ and $E|_{D_-^n}$. Choose explicit trivializations $\Phi_+: E|_{D_+^n} \to D_+^n \times F$ and $\Phi_-: E|_{D_-^n} \to D_-^n \times F$. For $x\in D_+^n$, write $\Phi_+(x):E_x\to F$ for the fibre coordinate map determined by $\Phi_+$; for $x\in D_-^n$, write $\Phi_-(x):E_x\to F$ for the fibre coordinate map determined by $\Phi_-$.
For a point $x \in S^{n-1}$, the fibre $E_x$ is seen in two coordinate systems: one coming from $\Phi_+(x)$ and one coming from $\Phi_-(x)$. Passing from the $+$ coordinates to the $-$ coordinates gives the linear isomorphism
\begin{align*}
g_{\Phi_+,\Phi_-}(x) := \Phi_-(x)\circ \Phi_+(x)^{-1}: F \to F.
\end{align*}
The map $g_{\Phi_+,\Phi_-}: S^{n-1} \to G$ is continuous because it is the transition function between the two vector bundle charts. More explicitly, after writing each fibre map in the fixed [vector space](/page/Vector%20Space) $F$, composition and inversion are continuous operations in the topological group $G$, so $x \mapsto \Phi_-(x)\circ \Phi_+(x)^{-1}$ is continuous.
Now compare $E$ with the glued bundle $E_{g_{\Phi_+,\Phi_-}}$. On $D_+^n$ use $\Phi_+$, and on $D_-^n$ use $\Phi_-$. If $x \in S^{n-1}$ and a vector has $+$-coordinate $v \in F$, then its $-$-coordinate is $g_{\Phi_+,\Phi_-}(x)v$. This is exactly the relation
\begin{align*}
(x,v)_+ \sim (x,g_{\Phi_+,\Phi_-}(x)v)_-.
\end{align*}
Define a map from the disjoint union $(D_+^n\times F)\sqcup(D_-^n\times F)$ to $E$ by sending $(x,v)_+$ to $\Phi_+^{-1}(x,v)$ and sending $(x,w)_-$ to $\Phi_-^{-1}(x,w)$.
If $(x,v)_+ \sim (x,g_{\Phi_+,\Phi_-}(x)v)_-$, then the definition of $g_{\Phi_+,\Phi_-}$ gives
\begin{align*}
g_{\Phi_+,\Phi_-}(x)v=\Phi_-(x)\Phi_+(x)^{-1}v.
\end{align*}
Hence
\begin{align*}
\Phi_-^{-1}(x,g_{\Phi_+,\Phi_-}(x)v)=\Phi_+^{-1}(x,v).
\end{align*}
Therefore the map is constant on equivalence classes and descends to a well-defined bundle map $E_{g_{\Phi_+,\Phi_-}}\to E$. It is fibrewise linear and bijective because, over each point of $S^n$, either one product chart applies or the two representatives are identified by the displayed relation. Its inverse is obtained by applying $\Phi_+$ or $\Phi_-$ according to the hemisphere representative, so the descended map is a vector bundle isomorphism
\begin{align*}
E_{g_{\Phi_+,\Phi_-}} \cong E.
\end{align*}
[/guided]
[/step]
[step:Compute how changing product charts changes the clutching map]
Let $\Psi_+$ and $\Psi_-$ be another pair of product charts for $E|_{D_+^n}$ and $E|_{D_-^n}$. Define the change-of-chart maps $A_+: D_+^n \to G$ and $A_-: D_-^n \to G$ by
\begin{align*}
\Psi_+(x)=A_+(x)\Phi_+(x), \qquad \Psi_-(x)=A_-(x)\Phi_-(x).
\end{align*}
If $g$ and $h$ are the clutching maps associated to $(\Phi_+,\Phi_-)$ and $(\Psi_+,\Psi_-)$, respectively, then for every $x \in S^{n-1}$, substitution of the two definitions gives
\begin{align*}
h(x)=A_-(x)\Phi_-(x)\circ \Phi_+(x)^{-1}A_+(x)^{-1}=A_-(x)g(x)A_+(x)^{-1}.
\end{align*}
Thus changes of hemisphere product charts act on clutching maps by left and right multiplication by maps extending over the two hemispheres.
[/step]
[step:Reduce extendable changes to constant component representatives for $n \geq 2$]
Assume $n \geq 2$. Let
\begin{align*}
A_+: D_+^n \to GL(k,\mathbb{R})
\end{align*}
be continuous. Since $D_+^n$ is connected, the image of $A_+$ lies in one path component of $GL(k,\mathbb{R})$. Choose a point $p_+ \in D_+^n$ and define
\begin{align*}
a_+ := A_+(p_+) \in GL(k,\mathbb{R}).
\end{align*}
Choose a contraction $C_+: D_+^n\times[0,1]\to D_+^n$ with $C_+(x,0)=x$ and $C_+(x,1)=p_+$ for all $x\in D_+^n$. Restricting $A_+\circ C_+$ to $S^{n-1}\times[0,1]$ gives a homotopy in $GL(k,\mathbb{R})$ from $A_+|_{S^{n-1}}$ to the constant map with value $a_+$. The same argument applied to
\begin{align*}
A_-: D_-^n \to GL(k,\mathbb{R})
\end{align*}
gives a constant $a_- \in GL(k,\mathbb{R})$ such that $A_-|_{S^{n-1}}$ is homotopic to the constant map with value $a_-$. Therefore every change of hemisphere product charts changes $g$, up to homotopy, by
\begin{align*}
g \mapsto a_-ga_+^{-1}.
\end{align*}
Conversely, every pair of constants $a_+,a_- \in GL(k,\mathbb{R})$ extends over the hemispheres by constant maps, so every transformation of this form is produced by a change of trivialization.
[/step]
[step:Turn a homotopy of clutching maps into an isomorphism of glued bundles]
Let
\begin{align*}
g_0,g_1: S^{n-1}\to G
\end{align*}
be continuous clutching maps, and let $H:S^{n-1}\times[0,1]\to G$ be a continuous homotopy satisfying $H(x,0)=g_0(x)$ and $H(x,1)=g_1(x)$ for every $x\in S^{n-1}$. Define $B:S^{n-1}\to G$ by
\begin{align*}
B(x)=g_1(x)g_0(x)^{-1}.
\end{align*}
The map $B$ is null-homotopic, because $K: S^{n-1}\times[0,1]\to G$ defined by
\begin{align*}
K(x,t)=H(x,t)g_0(x)^{-1}
\end{align*}
is a homotopy from the identity-valued map to $B$. Because $B$ is null-homotopic, it extends over the disk $D_-^n$ as follows. View $D_-^n$ as the cone $(S^{n-1}\times[0,1])/(S^{n-1}\times\{1\})$, with boundary represented by $S^{n-1}\times\{0\}$. The homotopy $K$ is constant equal to the identity at $t=0$ and equals $B$ at $t=1$, so after reversing the parameter it descends through the cone quotient to a continuous map $A_-:D_-^n\to G$ with $A_-|_{S^{n-1}}=B$. Let $A_+:D_+^n\to G$ be the constant identity-valued map. The preceding change-of-chart computation gives
\begin{align*}
A_-(x)g_0(x)A_+(x)^{-1}=g_1(x)
\end{align*}
for every $x\in S^{n-1}$. Therefore the identity map on the $+$ hemisphere and the fibrewise map $(x,v)_-\mapsto (x,A_-(x)v)_-$ on the $-$ hemisphere descend to a vector bundle isomorphism $E_{g_0}\cong E_{g_1}$.
Applying this to a homotopy from $h$ to the map $x\mapsto a_-g(x)a_+^{-1}$, and then applying the constant changes of chart with values $a_+$ and $a_-$ on the two hemispheres, shows that the stated equivalence relation implies $E_g\cong E_h$.
[/step]
[step:Conclude the real classification]
For real bundles, every hemisphere-clutched rank $k$ vector bundle over $S^n$ arises from a map
\begin{align*}
g: S^{n-1}\to GL(k,\mathbb{R}),
\end{align*}
by recovering the transition function from hemisphere product charts. We now prove the necessary direction for isomorphic glued bundles. Let $I:E_g\to E_h$ be a vector bundle isomorphism over $S^n$. Pull the standard product charts of $E_h$ back along $I$ to obtain a second pair of hemisphere product charts of $E_g$. The clutching map for this pulled-back pair is $h$, because if a vector over $x\in S^{n-1}$ has $+$-coordinate $v$ after applying $I$, then its $-$-coordinate in $E_h$ is $h(x)v$.
Comparing this pulled-back pair with the standard product charts of $E_g$, the change-of-chart computation gives extendable maps $A_+:D_+^n\to GL(k,\mathbb{R})$ and $A_-:D_-^n\to GL(k,\mathbb{R})$ such that
\begin{align*}
h(x)=A_-(x)g(x)A_+(x)^{-1}
\end{align*}
for every $x\in S^{n-1}$. Reducing the boundary values of $A_+$ and $A_-$ to constant component representatives gives constants $a_+,a_-\in GL(k,\mathbb{R})$ such that $h$ is homotopic to $a_-ga_+^{-1}$. The converse direction was proved by the homotopy and constant-change construction. Since only the path components of $a_+$ and $a_-$ matter on homotopy classes, the set of isomorphism classes is
\begin{align*}
[S^{n-1},GL(k,\mathbb{R})]\big/(\pi_0 GL(k,\mathbb{R}) \times \pi_0 GL(k,\mathbb{R})).
\end{align*}
[/step]
[step:Use path connectedness of $GL(k,\mathbb{C})$ for the complex classification]
For complex bundles, set $F=\mathbb{C}^k$ and $G=GL(k,\mathbb{C})$. Since each closed hemisphere is contractible and paracompact, the triviality theorem for vector bundles over contractible paracompact bases shows that every rank $k$ complex vector bundle over $S^n$ admits product charts over $D_+^n$ and $D_-^n$. The recovery construction above therefore assigns to any such complex bundle a transition function $S^{n-1}\to GL(k,\mathbb{C})$, and gluing the two product bundles by that transition function reconstructs the original bundle. The general linear group $GL(k,\mathbb{C})$ is path-connected: for any $A\in GL(k,\mathbb{C})$, Gaussian elimination connects $A$ inside $GL(k,\mathbb{C})$ to a diagonal matrix with non-zero complex diagonal entries, and each non-zero diagonal entry is path-connected to $1$ inside $\mathbb{C}\setminus\{0\}$. Hence every constant map
\begin{align*}
S^{n-1}\to GL(k,\mathbb{C})
\end{align*}
is homotopic to the constant identity map. Hence the left and right constant multiplications act as the identity on
\begin{align*}
[S^{n-1},GL(k,\mathbb{C})].
\end{align*}
Therefore the clutching construction gives a bijection between isomorphism classes of rank $k$ complex vector bundles over $S^n$ and the ordinary homotopy set
\begin{align*}
[S^{n-1},GL(k,\mathbb{C})].
\end{align*}
[/step]
[step:Record the separate endpoint equivalence when $n=1$]
When $n=1$, write
\begin{align*}
S^0=\{q_0,q_1\}
\end{align*}
for the common boundary of the two closed intervals $D_+^1$ and $D_-^1$. A clutching function is a map $g:S^0\to G$, equivalently the pair $(g(q_0),g(q_1))\in G\times G$. The exact equivalence relation is the following: $g\sim h$ if and only if there exist continuous maps
\begin{align*}
A_+:D_+^1\to G, \qquad A_-:D_-^1\to G
\end{align*}
such that, for $j\in\{0,1\}$,
\begin{align*}
h(q_j)=A_-(q_j)g(q_j)A_+(q_j)^{-1}.
\end{align*}
Equivalently, the four endpoint values $A_+(q_0),A_+(q_1),A_-(q_0),A_-(q_1)$ are allowed precisely when $A_+(q_0)$ and $A_+(q_1)$ lie in the same path component of $G$, and $A_-(q_0)$ and $A_-(q_1)$ lie in the same path component of $G$.
For necessity, let $I:E_g\to E_h$ be a vector bundle isomorphism over $S^1$. Pull the standard product charts of $E_h$ back along $I$ to obtain product charts $\Psi_+$ on $E_g|_{D_+^1}$ and $\Psi_-$ on $E_g|_{D_-^1}$. Comparing $\Psi_+$ and $\Psi_-$ with the standard product charts of $E_g$ gives continuous maps $A_+:D_+^1\to G$ and $A_-:D_-^1\to G$ such that $\Psi_+(x)=A_+(x)\Phi_+(x)$ and $\Psi_-(x)=A_-(x)\Phi_-(x)$. At each endpoint $q_j$, substitution into the transition function gives
\begin{align*}
h(q_j)=A_-(q_j)g(q_j)A_+(q_j)^{-1}.
\end{align*}
Conversely, suppose such maps $A_+$ and $A_-$ exist. Define fibrewise maps on the two product pieces by $(x,v)_+\mapsto (x,A_+(x)v)_+$ on $D_+^1\times F$ and $(x,w)_-\mapsto (x,A_-(x)w)_-$ on $D_-^1\times F$. If $(q_j,v)_+\sim(q_j,g(q_j)v)_-$ in $E_g$, then the two images are $(q_j,A_+(q_j)v)_+$ and $(q_j,A_-(q_j)g(q_j)v)_-$. In $E_h$, the first of these is glued to $(q_j,h(q_j)A_+(q_j)v)_-$. The displayed formula gives $h(q_j)A_+(q_j)=A_-(q_j)g(q_j)$, so the two images are equivalent in $E_h$. Therefore the fibrewise maps respect both endpoint gluing relations and descend to a vector bundle isomorphism $E_g\cong E_h$. Thus, for $n=1$, clutching functions on $S^0$ are quotiented by exactly the endpoint changes of trivialization that extend over the two intervals.
[/step]