Browse Source

lec05:sorting

webturing 4 years ago
parent
commit
5d6fdb4925
7 changed files with 154 additions and 0 deletions
  1. 26 0
      A.cpp
  2. 25 0
      B.cpp
  3. 22 0
      C.cpp
  4. 21 0
      D.cpp
  5. 24 0
      E.cpp
  6. 17 0
      F.cpp
  7. 19 0
      G.cpp

+ 26 - 0
A.cpp

@@ -0,0 +1,26 @@
+#include<bits/stdc++.h>
+using namespace std;
+int main() {
+    int n;
+    cin >> n;
+    int *a = new int[n];
+    for(int i = 0; i < n; i++) {
+        cin >> a[i];
+    }
+    for(int i = 0; i < n; i++) {
+        int k = i;
+        for(int j = i + 1; j < n; j++) {
+            if(a[j] < a[k]) {
+                k = j;
+            }
+        }
+        cout << "swap(a[" << i << "], a[" << k << "]):";
+        swap(a[i], a[k]);
+        for(int i = 0; i < n; i++) {
+            cout << a[i] << " ";
+        }
+        cout << endl;
+    }
+    delete[]a;
+    return 0;
+}

+ 25 - 0
B.cpp

@@ -0,0 +1,25 @@
+#include<bits/stdc++.h>
+using namespace std;
+int main() {
+    int n;
+    cin >> n;
+    int *a = new int[n];
+    for(int i = 0; i < n; i++) {
+        cin >> a[i];
+    }
+    for(int i = 0; i < n; i++) {
+        int k = i;
+        for(int j = i + 1; j < n; j++) {
+            if(a[j] < a[k]) {
+                k = j;
+            }
+        }
+        swap(a[i], a[k]);
+    }
+    for(int i = 0; i < n; i++) {
+        cout << a[i] << " ";
+    }
+    cout << endl;
+    delete[]a;
+    return 0;
+}

+ 22 - 0
C.cpp

@@ -0,0 +1,22 @@
+#include<bits/stdc++.h>
+using namespace std;
+int main() {
+    int n = 10;
+    int *a = new int[n];
+    for(int i = 0; i < n; i++) {
+        cin >> a[i];
+    }
+    for(int i = 0; i < n; i++) {
+        for(int j = n - 2; j >= i; j--) {
+            if(a[j] > a[j + 1]) {
+                swap(a[j], a[j + 1]);
+            }
+        }
+    }
+    for(int i = 0; i < n; i++) {
+        cout << a[i] << " ";
+    }
+    cout << endl;
+    delete[]a;
+    return 0;
+}

+ 21 - 0
D.cpp

@@ -0,0 +1,21 @@
+#include<bits/stdc++.h>
+using namespace std;
+int main() {
+    int n = 10;
+    int *a = new int[n];
+    for(int i = 0; i < n; i++) {
+        cin >> a[i];
+    }
+    for(int i = n - 2; i >= 0; i--) {
+        if(a[i] <= a[i + 1]) {
+            break;
+        }
+        swap(a[i], a[i + 1]);
+    }
+    for(int i = 0; i < n; i++) {
+        cout << a[i] << " ";
+    }
+    cout << endl;
+    delete[]a;
+    return 0;
+}

+ 24 - 0
E.cpp

@@ -0,0 +1,24 @@
+#include<bits/stdc++.h>
+using namespace std;
+int main() {
+    int n ;
+    cin >> n;
+    int *a = new int[n];
+    for(int i = 0; i < n; i++) {
+        cin >> a[i];
+    }
+    for(int i = 1; i < n; i++) {
+        for(int j = i - 1; j >= 0; j--) {
+            if(a[j] <= a[j + 1]) {
+                break;
+            }
+            swap(a[j], a[j + 1]);
+        }
+    }
+    for(int i = 0; i < n; i++) {
+        cout << a[i] << " ";
+    }
+    cout << endl;
+    delete[]a;
+    return 0;
+}

+ 17 - 0
F.cpp

@@ -0,0 +1,17 @@
+#include<bits/stdc++.h>
+using namespace std;
+int main() {
+    int n ;
+    cin >> n;
+    int *a = new int[n];
+    for(int i = 0; i < n; i++) {
+        cin >> a[i];
+    }
+    sort(a, a + n);
+    int k = unique(a, a + n) - a;
+    for(int i = 0; i < k; i++) {
+        cout << a[i] << endl;
+    }
+    delete[]a;
+    return 0;
+}

+ 19 - 0
G.cpp

@@ -0,0 +1,19 @@
+#include<bits/stdc++.h>
+using namespace std;
+int main() {
+    int n ;
+    while(cin >> n) {
+        int *a = new int[n];
+        for(int i = 0; i < n; i++) {
+            cin >> a[i];
+        }
+        sort(a, a + n);
+        double s = 0;
+        for(int i = 1; i <= n - 2; i++) {
+            s += a[i];
+        }
+        cout << fixed << setprecision(2) << s / (n - 2) << endl;
+        delete[]a;
+    }
+    return 0;
+}