Thursday, 17 September 2009

solution for week2 challenge

void getInt(*strint, int val){
int length=0;
int len=0;
int num=val;

if(num == 0){
*strint ='0';
*(strint+1) ='\0';
}
else{
while(num!=0){
num /=10;
length++;
}


len=length;
while(len>0){
*(strint + len - 1)= val %10 + 48;
val /=10;
len--;
}
*(strint +length)='\0';
}
}

3 ways for sort

here are 3 ways usually use for sort in c++

1.partition


int partition(int* a,int l,int r){
int i=l-1,j=r,v=a[r];
while(1){
while(a[++i] while(a[--j]>v) if(j<=i) break;
if(i>=j) break;
swap(a[i],a[j]);
}
swap(a[i],a[r]);
return i;
}
void qsort(int* a,int l,int r){
if(l>=r)
return;
int i = partition(a,l,r);
qsort(a,l,i-1);
qsort(a,i+1,r);
}



2.insertsort

void insertsort(int* a,int n){
  int key;
  for(int j=1;j {
  key = a[j];
  for(int i=j-1;i>=0&&a[i]>key;i--){
  a[i+1] = a[i];
  }
  a[i+1] = key;
  }
}


3.buble

void buble(int *a,int n){
  for(int i=0;i {
  for(int j=1;j {
  if(a[j] {
  int temp=a[j];
  a[j] = a[j-1];
  a[j-1] = temp;
  }
  }
  }
}