数据结构实验8
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 }