程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++刪除數組內重復的數據

C++刪除數組內重復的數據

編輯:關於C++

筆試時曾經遇到過的一道題,當時沒有好的想法。今天無意中想起,於是把自己的一種解決方法記下來。

1. main.cpp

1./**
2. * 問題描述:
3. * 刪除數組內重復的數據
4. *
5. * 一個解決方法:
6. * 可以先將數組排序,然後再刪除
7. * 如一個已經排好序的整數數組:1, 1, 2, 2, 3
8. */
9.
10.#include <iostream>
11.
12.using std::cout;
13.using std::endl;
14.using std::swap;
15.
16./**
17. * 打印數組
18. */
19.template<class T>
20.void printArray(const T array[], const int size);
21.
22./**
23. * 將數組排序,選擇排序
24. */
25.template<class T>
26.void sort(T array[], const int size);
27.
28./**
29. * 對已經排好序的數據
30. * 將數組內重復的數據刪除
31. * @return int 刪除重復數據後數組的大小
32. */
33.template<class T>
34.int deleteRepeatedData(T array[], const int size);
35.
36.int main(int argc, char *argv[]) {
37. int array[] = {9, 1, 1, 8, 2, 3, 3, 4, 3, 3, 5, 9, 7, 8, 2, 6, 9, 1, 9, 0, 9, 0};
38. int size = sizeof(array) / sizeof(int);
39. cout<<"A initial int array: "<<endl;
40. printArray(array, size);
41.
42. cout<<"\nAfter sort: "<<endl;
43. sort(array, size);
44. printArray(array, size);
45.
46. cout<<"\nAfter delete repeated data: "<<endl;
47. size = deleteRepeatedData(array, size);
48. printArray(array, size);
49.}
50.
51./**
52. * 打印數組
53. */
54.template<class T>
55.void printArray(const T array[], const int size) {
56. for (int i=0; i<size-1; i++) {
57. cout<<array[i]<<", ";
58. }
59. cout<<array[size-1]<<endl;
60.}
61.
62./**
63. * 將數組排序,選擇排序
64. */
65.template<class T>
66.void sort(T array[], const int size) {
67. for (int i=0; i<size-1; i++) {
68. int min = i;
69. for (int j=i+1; j<size; j++) {
70. if (array[min] > array[j]) {
71. min = j;
72. }
73. }
74. if (min != i) {
75. swap(array[i], array[min]);
76. }
77. }
78.}
79.
80./**
81. * 對已經排好序的數據
82. * 將數組內重復的數據刪除
83. * @return int 刪除重復數據後數組的大小
84. */
85.template<class T>
86.int deleteRepeatedData(T array[], const int size) {
87. int j = 0;
88. for (int i=0; i<size-1; i++) {
89. while (array[i] == array[i+1]) {
90. i++;
91. }
92. array[j++] = array[i];
93. }
94. return j;
95.}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved