today i practised selection sorting algorithm with following
Code:#include <stdio.h> #include <stdlib.h> #define LEN 10 void swap(int *a,int *b) { /* int temp = *a; *a = *b; *b = temp; */ *a = *a ^ *b; *b = *a ^ *b; *a = *a ^ *b; } void selection_sort(int *arr, int len) { int i = 0; for(;i<len-1;i++) { int j=i+1,min=i; for(;j<len;j++) { if(arr[j] < arr[min]) { min = j; } } swap(&arr[min],&arr[i]); } } int main() { int *a = malloc(sizeof(int) * LEN); int i = 0; for(;i<LEN;i++) { a[i] = rand()%300; printf("%d\t",a[i]); } printf("\n"); selection_sort(a,LEN); for(i=0;i<LEN;i++) { printf("%d\t",a[i]); } printf("\n"); free(a); }
if i use code block
int temp = *a;
*a = *b;
*b = temp;
csxia-laptop:/data/learning/C/DataStructure # ./selection_insert
283 286 177 115 293 235 286 192 249 121
115 121 177 192 235 249 283 286 286 293
it works fine , but if i use the latter code block
*a = *a ^ *b;
*b = *a ^ *b;
*a = *a ^ *b;
then a and b's value will get zero if the address of a and b is the same
csxia-laptop:/data/learning/C/DataStructure # ./selection_insert
283 286 177 115 293 235 286 192 249 121
115 121 0 192 235 249 283 0 286 293
i have no idea why, anyone who can help me???



LinkBack URL
About LinkBacks



