1 #include<iostream>
2 #include<string>
3 using namespace std;
4 #define Max_size 100
5
6 void selectSort(int *arr,int n) //简单选择排序
7 {
8 int i,j,k,temp;
9 for(i=0;i<n;i++){
10 k = i;
11 for(j=i+1;j<n;j++){
12 if(arr[k]>arr[j])
13 k = j; //最小值的索引
14 }
15 temp = arr[i];
16 arr[i] = arr[k];
17 arr[k] = temp;
18 }
19 }
20
21 //两两比较,将最大的值依次传递到尾部
22 void bubleSort(int *arr,int n) //冒泡排序
23 {
24 int temp,i,j,flag;
25 for(i=n-1;i>=1;i--){
26 flag = 1; //判断数是否是有序的
27 for(j=1;j<=i;j++){
28 if(arr[j-1]>arr[j]){
29 temp = arr[j];
30 arr[j] = arr[j-1];
31 arr[j-1] = temp;
32
33 flag = 0;
34 }
35 }
36 if(flag) //如果有序,将直接退出函数
37 return;
38 }
39 }
40
41 //将无序的数插入到有序的序列中
42 void insertSort(int*arr,int n) //直接插入排序
43 {
44 int temp,i,j;
45 for(i=1;i<n;i++){
46 temp = arr[i];
47 j=i-1;
48 while(j>=0&&temp<arr[j]){
49 arr[j+1] = arr[j--];
50 }
51 arr[j+1] = temp;
52 }
53 }
54
55 void quickSort(int*arr,int low,int high) //快速排序
56 {
57 int i,j,temp;
58 i = low; j = high;
59 if(low<high){
60 temp = arr[low];
61 while(i<j){
62 while(j>i&&arr[j]>=temp) j--;
63 if(i<j)
64 arr[i++] =arr[j];
65 while(j>i&&arr[i]<temp)i++;
66 if(i<j)
67 arr[j--] = arr[i];
68 }
69 arr[i] = temp;
70 quickSort(arr,low,i-1);
71 quickSort(arr,i+1,high);
72 }
73 }
74
75 void PrintArr(int*arr,int n)
76 {
77 for(int i=0;i<n;i++)
78 cout<<arr[i]<<" ";
79 cout<<endl;
80 }
81
82 int main()
83 {
84 int n;
85 cout<<"输入数组1元素个数:";
86 cin>>n;
87 int arr1[Max_size];
88 cout<<"输入数组元素:";
89 for(int i=0;i<n;i++)
90 cin>>arr1[i];
91 cout<<"进行简单选择排序\n";
92 selectSort(arr1,n);
93 cout<<"输出元素:";
94 PrintArr(arr1,n);
95 cout<<"输入数组2元素个数:";
96 cin>>n;
97 int arr2[Max_size];
98 cout<<"输入数组元素:";
99 for(int i=0;i<n;i++)
100 cin>>arr2[i];
101 cout<<"进行冒泡排序\n";
102 bubleSort(arr2,n);
103 cout<<"输出元素:";
104 PrintArr(arr2,n);
105 cout<<"输入数组3元素个数:";
106 cin>>n;
107 int arr3[Max_size];
108 cout<<"输入数组元素:";
109 for(int i=0;i<n;i++)
110 cin>>arr3[i];
111 cout<<"进行快速排序\n";
112 quickSort(arr3,0,n-1);
113 cout<<"输出元素:";
114 PrintArr(arr3,n);
115 return 0;
116 }