基本思路:比较表中的相邻元素,如果他们是逆序的话就交换他们的位置。重复多次以后,最终最大
的元素就沉到列表的最后一个位置,第二遍操作将第二大的元素沉下去,这样一直做,知道n-1遍以后,该列表就排好序了。
代码如下:

此处)折叠或打开


1. #include<stdio.h>
2. <malloc.h>
3. <iostream>
4. ;
5. //#define swap(x,y) (x ^= y,y ^= x,x ^= y)
6. int minTime(int *a,int n){
7. if (a ==NULL || n == 0)
8. ;
9. int i = 0,j = 0;
10. int count = 0;
11. for (i = 0;i < n-1;i++)
12. {
13. for (j = 0;j < n-i-1;j++)
14. {
15. if (a[j] > a[j+1])
16. {
17. (a[j],a[j+1]);
18. ++;
19. }
20.                  
21. }
22. }
23. ;
24. }
25. int main()
26. {
27.      
28. int len = 0;
29. while (cin >> len)
30. {
31. int *a = (int *)malloc(sizeof(int)*len);
32. int i = 0;
33. for (i = 0;i < len;i++)
34. {
35. >> a[i]; 
36. }
37. int result = minTime(a,len);
38. ("%d\n",result);
39. for (i = 0;i < len;i++)
40. {
41. ("%d\n",a[i]);
42. }
43. (a);
44. }
45. ;
46. }

包括比较次数


运行结果如下:

[root@localhost ~]# ./a.out 

 4 

 4 3 2 1 

 6 

 1 

 2 

 3 

 4

去哪笔试题(2016.09.08)


此处)折叠或打开


1. #include<iostream>
2. <vector>
3. ;
4. class Coder {
5. public:
6. <string> findCoder(vector<string> A, int n) { 
7. <string> result;
8. <int> resultInt;
9. //int count = 0;
10. <string>::iterator iter = A.begin();
11. for (;iter != A.end();iter++)
12. {
13. int j =0;
14. string s = *iter;
15. int count = 0;
16. for (int i = 0;i < (*iter).length() && i+4 < (*iter).length();)
17. {
18. if (toupper(s[i]) == 'C' && toupper(s[i+1]) == 'O' && toupper(s[i+2]) == 'D' && toupper(s[i+3]) == 'E' && toupper(s[i+4]) == 'R')
19. {
20. = i+5;
21. ++;
22. }
23. else
24. = i+1;
25. }
26. //cout << count << endl;
27. .push_back(*iter);
28. .push_back(count);
29. }
30. for (int i = 0;i < n-1;i++)
31. {
32. for (int j = 0;j < n-i-1;j++)
33. {
34. if (resultInt[j] < resultInt[j+1])
35. {
36. (resultInt[j],resultInt[j+1]);
37. (result[j],result[j+1]);
38. }
39. }
40. }
41. for (int i = 0;i < n;i++)
42. {
43. << result[i]<< endl;
44. << resultInt[i]<< endl;
45. }
46. ;
47. }
48. };
49. int main()
50. {
51. ;
52. string str[3] = {"i am a coder","Coder,Coder","Coder"};
53. <string> A(&str[0],&str[3]);
54. .findCoder(A,3);
55. ;
56. }


运行结果:

[root@bogon ~]# ./a.out 

 Coder,Coder 

 2 

 i am a coder 

 1 

 Coder 

 1 

 [root@bogon ~]#