1 #include <stdio.h>
2 #define N 10
3 /*
4 数组最值和两种排序
5 */
6 int main(void)
7 {
8 /*
9 //题目1.求一个数组中最大与最小值
10 int arr[N] = {9,-1,0,-3,5,6,7,8,15,10};
11 int i,j,max,min;
12 max = min = arr[0];//假设数组其中的一个元素 为最值
13 for(i = 0;i<N;i++)
14 {
15 if(max<arr[i])
16 max = arr[i];
17 if(min>arr[i])
18 min = arr[i];
19 }
20 printf("max = %d,min = %d\n",max,min);
21 */
22 /*
23 //题目2.对数组元素进行排序(选择排序)
24 int arr[N] = {9,-1,0,-3,5,6,7,8,15,10};
25 int i,j,temp;
26 for(i = 0;i<N-1;i++)//外层比较到第N-1个元素,所以下标终止于N-2
27 {
28 for(j = i+1;j<N;j++)//里层比较到最后一个元素,所以下标终止于N-1
29 {
30 if(arr[i]>arr[j])
31 {
32 temp = arr[i];
33 arr[i] = arr[j];
34 arr[j] = temp;
35 }
36 }
37 }
38 for(i = 0;i<N;i++)
39 {
40 printf("%d\t",arr[i]);
41 }
42 */
43 /*
44 //题目3.对数组元素进行排序(选择排序)优化版本:口诀 比而不换,只换下标
45 int arr[N] = {9,-1,0,-3,5,6,7,8,15,10};
46 int i,j,temp,idx;
47 for(i = 0;i<N-1;i++)
48 {
49 idx = i;//假设为最小值的下标
50 for(j = i+1;j<N;j++)
51 {
52 if(arr[idx]>arr[j])
53 {
54 idx = j;
55 }
56 }
57 if(idx != i)//如果 idx == i,说明最小的就是下标i对应的元素,进入下一轮
58 {
59 temp = arr[i];
60 arr[i] = arr[idx];
61 arr[idx] = temp;
62 }
63 }
64 for(i = 0;i<N;i++)
65 {
66 printf("%d\t",arr[i]);
67 }
68 */
69 /*
70 //题目4.对数组元素进行排序(冒泡排序)
71 int arr[N] = {9,-1,0,-3,5,6,7,8,15,10};
72 int i,j,temp;
73
74 for(i = 0;i<N-1;i++)//N个数就有N-1趟比较
75 {
76 for(j = 0;j<N-1-i;j++)//每趟里面又有N-1-i次比较
77 {
78 if(arr[j]>arr[j+1])
79 {
80 temp = arr[j];
81 arr[j] = arr[j+1];
82 arr[j+1] = temp;
83 }
84 }
85 }
86 for(i = 0;i<N;i++)
87 {
88 printf("%d\t",arr[i]);
89 }
90 */
91 return 0;
92 }