Скачиваний:
24
Добавлен:
01.05.2014
Размер:
627.71 Кб
Скачать
  1. Профилирование программы QuickSort.Cpp

Address

Line

Source

Clockticks (EBS)

Timer (TBS)

 

1

void swap (float &p, float &q)

 

 

0x1000

2

{

918

879

 

3

float hold;

 

 

0x101E

4

hold = p;

75

73

0x1026

5

p = q;

9

20

0x1030

6

q = hold;

10

10

 

7

 

 

0x1038

8

}

31

52

 

9

 

 

 

10

 

 

 

11

void quicksort(float x[], int n)

 

 

0x1040

12

{

209

234

 

13

int left[20], right[20];

 

 

 

14

int i,j,sp,mid;

 

 

 

15

float pivot;

 

 

 

16

 

 

0x105E

17

left[1] = 1;

5

6

0x1065

18

right[1] = n;

2

 

0x106E

19

sp = 1;

 

1

 

20

 

 

0x1078

21

while (sp>0)

15

29

 

22

{

 

 

0x1085

23

if (left[sp] >= right[sp])

41

57

0x109E

24

{ sp = sp-1; }

17

24

0x10AD

25

else

3

1

 

26

{

 

 

0x10B2

27

i = left[sp];

36

35

0x10C2

28

j = right[sp];

3

9

0x10D5

29

pivot = x[j];

24

28

0x10E7

30

mid = (i+j) % 2;

24

21

0x1105

31

if ((j-i)>5)

1

5

0x111A

32

if (((x[mid]<pivot) && (x[mid]>x[i])) || ((x[mid]>pivot) && (x[mid]<x[i])))

28

35

0x118A

33

swap(x[mid],x[j]);

 

 

0x11AC

34

else

 

 

0x11B1

35

if (((x[i]<x[mid]) && (x[i]>pivot)) || ((x[i]>x[mid]) && (x[i]<pivot)))

16

14

0x1221

36

swap(x[i],x[j]);

2

6

0x1243

37

pivot = x[j];

16

20

0x1255

38

while (i<j)

16

5

 

39

{

 

 

0x1267

40

while (x[i]<pivot)

89

113

0x1280

41

{ i = i+1; }

56

36

0x1291

42

j = j-1;

47

46

0x12A0

43

while ((i<j) && (pivot<x[j]))

71

74

0x12C7

44

{ j = j-1; }

7

6

0x12D8

45

if (i<j)

27

29

0x12E6

46

{ swap(x[i],x[j]); }

 

3

0x1308

47

} // while

 

4

0x130D

48

j = right[sp]; // pivot to i

11

18

0x1320

49

swap(x[i],x[j]);

24

36

0x1342

50

if (i-left[sp]>=right[sp]-i)

20

20

 

51

{ // put shorter part first

 

 

0x1369

52

left[sp+1] = left[sp];

2

5

0x137D

53

right[sp+1] = i-1;

12

14

0x1393

54

left[sp] = i+1;

6

8

 

55

}

 

 

0x13A6

56

else

 

 

 

57

{

 

 

0x13A8

58

left[sp+1] = i+1;

1

 

0x13BB

59

right[sp+1] = right[sp];

1

7

0x13D5

60

right[sp] = i-1;

9

6

 

61

}

 

 

0x13EB

62

sp = sp+1; // push stack

13

8

 

63

} // if

 

 

0x13FA

64

} // while

5

6

 

65

 

 

 

66

 

 

0x13FF

67

}

9

5

 

68

 

 

 

69

 

 

 

70

 

 

 

71

int main()

 

 

0x1450

72

{

 

 

0x146E

73

for (int k = 1; k < 900000; k++)

3

2

 

74

{

 

 

0x1489

75

float array[] = {0, 1, 3, 2, 12, 5, 9, 7, 14};

10

5

 

76

 

 

 

77

//for (int k = 1; k < 9; k++)

 

 

 

78

// { printf ("%f\n", array[k]); }

 

 

 

79

 

 

 

80

//printf ("================\n");

 

 

0x14C8

81

quicksort(array, 8);

2

1

 

82

//for (k = 1; k < 9; k++)

 

 

 

83

// { printf ("%f\n", array[k]); }

 

 

0x14D6

84

}

 

 

0x14D8

85

return 0;

 

 

0x14DA

86

}

 

 

Соседние файлы в папке Лабораторная работа №2
  • #
    01.05.201470.66 Кб24Lab2_sempl_results.xls
  • #
    01.05.2014627.71 Кб24LAB_2.doc